Skip to content
Snippets Groups Projects
Select Git revision
  • 4b2b34a42a691220937409b00e96d3d4f6e343a2
  • master default
2 results

command_parsing_test.cc

Blame
  • Forked from sce213ta / mysh-1
    Source project has a limited visibility.
    command_parsing_test.cc 2.00 KiB
    extern "C" {
    #include "utils.h"
    }
    
    #include "gtest/gtest.h"
    
    #include <stdlib.h>
    
    static void free_string_array(char*** argv, int num_str);
    
    TEST(CommandParsingTest, BasicCommand) {
      char** argv = NULL;
      int argc = -1;
    
      mysh_parse_command("cd test", &argc, &argv);
    
      ASSERT_EQ(argc, 2);
      EXPECT_STREQ(argv[0], "cd");
      EXPECT_STREQ(argv[1], "test");
    
      free_string_array(&argv, argc);
    }
    
    TEST(CommandParsingTest, SingleCommand) {
      char** argv = NULL;
      int argc = -1;
    
      mysh_parse_command("pwd", &argc, &argv);
    
      ASSERT_EQ(argc, 1);
      EXPECT_STREQ(argv[0], "pwd");
    
      free_string_array(&argv, argc);
    }
    
    TEST(CommandParsingTest, Redirection1) {
      char** argv = NULL;
      int argc = -1;
    
      mysh_parse_command("pwd > curdir.txt", &argc, &argv);
    
      ASSERT_EQ(argc, 3);
      EXPECT_STREQ(argv[0], "pwd");
      EXPECT_STREQ(argv[1], ">");
      EXPECT_STREQ(argv[2], "curdir.txt");
    
      free_string_array(&argv, argc);
    }
    
    TEST(CommandParsingTest, Redirection2) {
      char** argv = NULL;
      int argc = -1;
    
      mysh_parse_command("pwd > curdir.txt | less", &argc, &argv);
    
      ASSERT_EQ(argc, 5);
      EXPECT_STREQ(argv[0], "pwd");
      EXPECT_STREQ(argv[1], ">");
      EXPECT_STREQ(argv[2], "curdir.txt");
      EXPECT_STREQ(argv[3], "|");
      EXPECT_STREQ(argv[4], "less");
    
      free_string_array(&argv, argc);
    }
    
    TEST(CommandParsingTest, SpaceBeforeString) {
      char** argv = NULL;
      int argc = -1;
    
      mysh_parse_command("    \n  \t pwd > curdir.txt | less", &argc, &argv);