diff --git a/Makefile b/Makefile index fddb9c14e177b333b2e4ec07962f613d7d31fa30..81ed9318977ceb095a8a69ba13daef49778b73ac 100644 --- a/Makefile +++ b/Makefile @@ -12,9 +12,9 @@ mysh: $(OBJ) # For testing CXX=g++ -std=c++11 -TESTING_FLAGS=-I./tests/src -I./tests/include $(CFLAGS) +TESTING_FLAGS=-I./tests/src -I./tests/include $(CFLAGS) -Wno-write-strings TESTING_LIB=-lgtest -lgtest_main -L./tests/lib -lpthread $(LIB) -TESTING_SRC=./tests/src/command_parsing_test.cc +TESTING_SRC=./tests/src/command_parsing_test.cc ./tests/src/command_validate_test.cc TESTING_EXE=mysh-test test: $(OBJ) diff --git a/include/commands.h b/include/commands.h index cef87396eaf3c171cd412fe4e527f7fb6d725e19..0afab8b78962ddae6d1e74b1c6561fd533965732 100644 --- a/include/commands.h +++ b/include/commands.h @@ -1,10 +1,47 @@ #ifndef MYSH_COMMANDS_H_ #define MYSH_COMMANDS_H_ +/** + do_cd(argc, argv) + + params: + argc: # of arguments. argc must be 2. just "cd" doesn't be approved. + argv: a list of arguments. + + returns: + If success, return 0. + Else if arguments are not valid, return -1. +*/ int do_cd(int argc, char** argv); + +/** + do_pwd(argc, argv) + + params: + argc: # of arguments. argc must be 1. + argv: a list of arguments. + + returns: + If success, return 0. + Else if arguments are not valid, return -1. +*/ int do_pwd(int argc, char** argv); +/** + validate_cd_argv(argc, argv) + + returns: + If success, return 1. (true) + Else return 0. (false) +*/ int validate_cd_argv(int argc, char** argv); +/** + validate_pwd_argv(argc, argv) + + returns: + If success, return 1. (true) + Else return 0. (false) +*/ int validate_pwd_argv(int argc, char** argv); #endif // MYSH_COMMANDS_H_ diff --git a/src/commands.c b/src/commands.c index 2df0d4d8834de3f4990570f3f3fc22d63fb6cbe3..20293c896ca4d203a2461c69f88ac24c0a4bca07 100644 --- a/src/commands.c +++ b/src/commands.c @@ -21,8 +21,10 @@ int do_pwd(int argc, char** argv) { int validate_cd_argv(int argc, char** argv) { // TODO: Fill it! + return 1; } int validate_pwd_argv(int argc, char** argv) { // TODO: Fill it! + return 1; } diff --git a/tests/src/command_validate_test.cc b/tests/src/command_validate_test.cc new file mode 100644 index 0000000000000000000000000000000000000000..527485478e31acc7cb80a3595af4d3a8f24acd3e --- /dev/null +++ b/tests/src/command_validate_test.cc @@ -0,0 +1,68 @@ +extern "C" { +#include "commands.h" +} + +#include "gtest/gtest.h" + +TEST(CDValidateTest, ValidateCDArgv) { + int argc = 2; + char* argv[] = { + "cd", "." + }; + + ASSERT_EQ(validate_cd_argv(argc, argv), 1); +} + +TEST(CDValidateTest, ValidateCDArgv2) { + int argc = 3; + char* argv[] = { + "cd", ".", "." + }; + + ASSERT_EQ(validate_cd_argv(argc, argv), 0); +} + +TEST(CDValidateTest, ValidateCDArgv3) { + int argc = 1; + char* argv[] = { + "cd" + }; + + ASSERT_EQ(validate_cd_argv(argc, argv), 0); +} + +TEST(CDValidateTest, ValidateCDArgv4) { + int argc = 2; + char* argv[] = { + ".", "cd" + }; + + ASSERT_EQ(validate_cd_argv(argc, argv), 0); +} + +TEST(PWDValidateTest, ValidatePWDArgv) { + int argc = 1; + char* argv[] = { + "pwd" + }; + + ASSERT_EQ(validate_pwd_argv(argc, argv), 1); +} + +TEST(PWDValidateTest, ValidatePWDArgv2) { + int argc = 2; + char* argv[] = { + "pwd", "cd" + }; + + ASSERT_EQ(validate_pwd_argv(argc, argv), 0); +} + +TEST(PWDValidateTest, ValidatePWDArgv3) { + int argc = 1; + char* argv[] = { + "cd" + }; + + ASSERT_EQ(validate_pwd_argv(argc, argv), 0); +}