From 03b8c017f2f9198d86a0808995699c5b33a2d910 Mon Sep 17 00:00:00 2001 From: Jaewon Choi <jaewon.james.choi@gmail.com> Date: Tue, 19 Sep 2017 00:44:50 +0900 Subject: [PATCH] Add command validating test --- Makefile | 4 +- include/commands.h | 37 ++++++++++++++++ src/commands.c | 2 + tests/src/command_validate_test.cc | 68 ++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 tests/src/command_validate_test.cc diff --git a/Makefile b/Makefile index fddb9c1..81ed931 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 cef8739..0afab8b 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 2df0d4d..20293c8 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 0000000..5274854 --- /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); +} -- GitLab