Skip to content

Commit

Permalink
update check args (#7)
Browse files Browse the repository at this point in the history
* convert is_invalid_argument to check_args

* update test
  • Loading branch information
rask24 committed Jan 15, 2024
1 parent 0627033 commit bfd6fe8
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 29 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ BUILD_DIR = ./build
INC_DIR = ./include
LIBFT_DIR = ./libft
SRC = $(SRC_DIR)/main.c \
$(SRC_DIR)/is_invalid_argument.c \
$(SRC_DIR)/check_args.c \
$(SRC_DIR)/generate_stack.c \
$(SRC_DIR)/nano_sort.c \
$(SRC_DIR)/utils/exit_with_error.c
Expand Down
4 changes: 2 additions & 2 deletions include/push_swap.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/* By: reasuke <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/01/10 12:37:54 by reasuke #+# #+# */
/* Updated: 2024/01/12 16:02:39 by reasuke ### ########.fr */
/* Updated: 2024/01/15 13:19:05 by reasuke ### ########.fr */
/* */
/* ************************************************************************** */

Expand All @@ -23,7 +23,7 @@

# include "../libft/libft.h"

bool is_invalid_argument(int argc, char **argv);
int check_args(int argc, char **argv);

t_list *generate_stack(int argc, char **argv);

Expand Down
12 changes: 7 additions & 5 deletions src/is_invalid_argument.c → src/check_args.c
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* is_invalid_argument.c :+: :+: :+: */
/* check_args.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: reasuke <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/01/11 14:44:55 by reasuke #+# #+# */
/* Updated: 2024/01/11 18:16:19 by reasuke ### ########.fr */
/* Updated: 2024/01/15 13:18:39 by reasuke ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -64,9 +64,11 @@ static bool _has_duplicate(int argc, char **argv)
return (false);
}

bool is_invalid_argument(int argc, char **argv)
int check_args(int argc, char **argv)
{
return (_has_not_digit(argc, argv)
if (_has_not_digit(argc, argv)
|| _has_overflow(argc, argv)
|| _has_duplicate(argc, argv));
|| _has_duplicate(argc, argv))
exit_with_error();
return (0);
}
7 changes: 2 additions & 5 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/* By: reasuke <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/01/10 12:37:36 by reasuke #+# #+# */
/* Updated: 2024/01/15 12:04:04 by reasuke ### ########.fr */
/* Updated: 2024/01/15 13:04:27 by reasuke ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -35,10 +35,7 @@ int main(int argc, char **argv)
{
t_list *stack_a;

if (argc < 2)
return (0);
if (is_invalid_argument(argc, argv))
exit_with_error();
check_args(argc, argv);
stack_a = generate_stack(argc, argv);
if (argc < 5)
nano_sort(stack_a, argc);
Expand Down
32 changes: 16 additions & 16 deletions test/test_is_invalid_argument.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,66 +6,66 @@ extern "C" {
#include "push_swap.h"
}

TEST(is_invalid_argument, OneArgumentValid) {
TEST(check_args, OneArgumentValid) {
int argc = 2;
const char *args[] = { "push_swap", "1" };
char **argv = const_cast<char **>(args);

EXPECT_FALSE(is_invalid_argument(argc, argv));
EXPECT_EQ(check_args(argc, argv), 0);
}

TEST(is_invalid_argument, ArgumentIsZero) {
TEST(check_args, ArgumentIsZero) {
int argc = 2;
const char *args[] = { "push_swap", "0" };
char **argv = const_cast<char **>(args);

EXPECT_FALSE(is_invalid_argument(argc, argv));
EXPECT_EQ(check_args(argc, argv), 0);
}

TEST(is_invalid_argument, ArgumentIsNegative) {
TEST(check_args, ArgumentIsNegative) {
int argc = 2;
const char *args[] = { "push_swap", "-42" };
char **argv = const_cast<char **>(args);

EXPECT_FALSE(is_invalid_argument(argc, argv));
EXPECT_EQ(check_args(argc, argv), 0);
}

TEST(is_invalid_argument, OneArgumentNonDigit) {
TEST(check_args, OneArgumentNonDigit) {
int argc = 2;
const char *args[] = { "push_swap", "abc" };
char **argv = const_cast<char **>(args);

EXPECT_TRUE(is_invalid_argument(argc, argv));
EXPECT_EXIT(check_args(argc, argv), ::testing::ExitedWithCode(1), "Error\n");
}

TEST(is_invalid_argument, OneArgumentIncludingNonDigit) {
TEST(check_args, OneArgumentIncludingNonDigit) {
int argc = 2;
const char *args[] = { "push_swap", "42abc" };
char **argv = const_cast<char **>(args);

EXPECT_TRUE(is_invalid_argument(argc, argv));
EXPECT_EXIT(check_args(argc, argv), ::testing::ExitedWithCode(1), "Error\n");
}

TEST(is_invalid_argument, OneArgumentMaxOverflow) {
TEST(check_args, OneArgumentMaxOverflow) {
int argc = 2;
const char *args[] = { "push_swap", "2147483648" }; // INT_MAX + 1
char **argv = const_cast<char **>(args);

EXPECT_TRUE(is_invalid_argument(argc, argv));
EXPECT_EXIT(check_args(argc, argv), ::testing::ExitedWithCode(1), "Error\n");
}

TEST(is_invalid_argument, OneArgumentMinOverflow) {
TEST(check_args, OneArgumentMinOverflow) {
int argc = 2;
const char *args[] = { "push_swap", "-2147483649" }; // INT_MIN - 1
char **argv = const_cast<char **>(args);

EXPECT_TRUE(is_invalid_argument(argc, argv));
EXPECT_EXIT(check_args(argc, argv), ::testing::ExitedWithCode(1), "Error\n");
}

TEST(is_invalid_argument, MultipleArgumentsWithDuplicate) {
TEST(check_args, MultipleArgumentsWithDuplicate) {
int argc = 5;
const char *args[] = { "push_swap", "1", "3", "5", "1" }; // Duplicate '1'
char **argv = const_cast<char **>(args);

EXPECT_TRUE(is_invalid_argument(argc, argv));
EXPECT_EXIT(check_args(argc, argv), ::testing::ExitedWithCode(1), "Error\n");
}

0 comments on commit bfd6fe8

Please sign in to comment.