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);
+}