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