1 #include <cli.hpp>
2 
3 #include "gtest/gtest.h"
4 
5 using namespace attn;
6 
TEST(TestCli,TestCliOptAll)7 TEST(TestCli, TestCliOptAll)
8 {
9     // Test --all on options
10     Config* config = new Config();
11     char* argv[2];
12     int i = 0;
13     argv[i++] = (char*)"--all";
14     argv[i++] = (char*)"on";
15     parseConfig(argv, argv + i, config);
16     EXPECT_EQ(true, config->getFlag(AttentionFlag::enVital));
17     EXPECT_EQ(true, config->getFlag(AttentionFlag::enCheckstop));
18     EXPECT_EQ(true, config->getFlag(AttentionFlag::enTerminate));
19     EXPECT_EQ(true, config->getFlag(AttentionFlag::enBreakpoints));
20     // The dfltTi flag is cleared by default and is not updated in the function.
21     EXPECT_EQ(false, config->getFlag(AttentionFlag::dfltTi));
22     EXPECT_EQ(true, config->getFlag(AttentionFlag::enClrAttnIntr));
23 
24     // Test --all off options
25     // Set the dfltTi flag to default value.
26     config->clearFlag(dfltTi);
27     i = 0;
28     argv[i++] = (char*)"--all";
29     argv[i++] = (char*)"off";
30     parseConfig(argv, argv + i, config);
31     EXPECT_EQ(false, config->getFlag(AttentionFlag::enVital));
32     EXPECT_EQ(false, config->getFlag(AttentionFlag::enCheckstop));
33     EXPECT_EQ(false, config->getFlag(AttentionFlag::enTerminate));
34     EXPECT_EQ(false, config->getFlag(AttentionFlag::enBreakpoints));
35     // The same, the dfltTi flag is not updated in the function.
36     EXPECT_EQ(false, config->getFlag(AttentionFlag::dfltTi));
37     EXPECT_EQ(false, config->getFlag(AttentionFlag::enClrAttnIntr));
38     delete config;
39 }
40 
TEST(TestCli,TestCliNonAll)41 TEST(TestCli, TestCliNonAll)
42 {
43     // Test options with on switch.
44     Config* config = new Config();
45     char* argv[11];
46     int i = 0;
47     argv[i++] = (char*)"--vital";
48     argv[i++] = (char*)"on";
49     argv[i++] = (char*)"--checkstop";
50     argv[i++] = (char*)"on";
51     argv[i++] = (char*)"--terminate";
52     argv[i++] = (char*)"on";
53     argv[i++] = (char*)"--breakpoints";
54     argv[i++] = (char*)"on";
55     argv[i++] = (char*)"--clrattnintr";
56     argv[i++] = (char*)"on";
57     // The --defaultti option does not have on/off switch.
58     // If this option is specified, it is enabled.
59     argv[i++] = (char*)"--defaultti";
60 
61     parseConfig(argv, argv + i, config);
62     EXPECT_EQ(true, config->getFlag(AttentionFlag::enVital));
63     EXPECT_EQ(true, config->getFlag(AttentionFlag::enCheckstop));
64     EXPECT_EQ(true, config->getFlag(AttentionFlag::enTerminate));
65     EXPECT_EQ(true, config->getFlag(AttentionFlag::enBreakpoints));
66     EXPECT_EQ(true, config->getFlag(AttentionFlag::enClrAttnIntr));
67     EXPECT_EQ(true, config->getFlag(AttentionFlag::dfltTi));
68 
69     // Test options with off switch.
70     // Set the dfltTi flag to default value.
71     config->clearFlag(dfltTi);
72     i = 0;
73     argv[i++] = (char*)"--vital";
74     argv[i++] = (char*)"off";
75     argv[i++] = (char*)"--checkstop";
76     argv[i++] = (char*)"off";
77     argv[i++] = (char*)"--terminate";
78     argv[i++] = (char*)"off";
79     argv[i++] = (char*)"--breakpoints";
80     argv[i++] = (char*)"off";
81     argv[i++] = (char*)"--clrattnintr";
82     argv[i++] = (char*)"off";
83 
84     parseConfig(argv, argv + i, config);
85     EXPECT_EQ(false, config->getFlag(AttentionFlag::enVital));
86     EXPECT_EQ(false, config->getFlag(AttentionFlag::enCheckstop));
87     EXPECT_EQ(false, config->getFlag(AttentionFlag::enTerminate));
88     EXPECT_EQ(false, config->getFlag(AttentionFlag::enBreakpoints));
89     EXPECT_EQ(false, config->getFlag(AttentionFlag::enClrAttnIntr));
90     // If the --defaultti option is not specified, it is disabled by default.
91     EXPECT_EQ(false, config->getFlag(AttentionFlag::dfltTi));
92     delete config;
93 }
94