1 #include "config.h"
2
3 #include "unity.h"
4
5 //#include <stdio.h>
6 //#include <ctype.h>
7 //#include <stdlib.h>
8 //#include <errno.h>
9 //#include <string.h>
10
11 //#include "ntpd.h"
12 //#include "ntp_config.h"
13 //#include "ntpsim.h"
14 //#include "ntp_scanner.h"
15 //#include "ntp_parser.h"
16
17 #include "ntp_scanner.c"
18 /* ntp_keyword.h declares finite state machine and token text */
19 //#include "ntp_keyword.h"
20
21 void test_keywordIncorrectToken(void);
22 void test_keywordServerToken(void);
23 void test_DropUninitializedStack(void);
24 void test_IncorrectlyInitializeLexStack(void);
25 void test_InitializeLexStack(void);
26
27
test_keywordIncorrectToken(void)28 void test_keywordIncorrectToken(void){
29 const char * temp = keyword(999);
30 //printf("%s\n",temp);
31 TEST_ASSERT_EQUAL_STRING("(keyword not found)",temp);
32 }
33
test_keywordServerToken(void)34 void test_keywordServerToken(void){
35 const char * temp = keyword(T_Server);
36 //printf("%s",temp); //143 or 401 ?
37 TEST_ASSERT_EQUAL_STRING("server",temp);
38 }
39
test_DropUninitializedStack(void)40 void test_DropUninitializedStack(void){
41 lex_drop_stack();
42 }
43
test_IncorrectlyInitializeLexStack(void)44 void test_IncorrectlyInitializeLexStack(void){
45
46 TEST_ASSERT_FALSE(lex_init_stack(NULL,NULL));
47 lex_drop_stack();
48 }
49
test_InitializeLexStack(void)50 void test_InitializeLexStack(void){
51
52 //Some sort of server is required for this to work.
53 sockaddr_u * remote_addr;
54 char origin[128] ={ "" } ;
55 strcat(origin,"127.0.0.1");
56 //snprintf(origin, sizeof(origin), "remote config from %s", stoa(remote_addr));
57 TEST_ASSERT_TRUE(lex_init_stack(origin,NULL)); //path, mode -> NULL is ok!
58 lex_drop_stack();
59 }
60
test_PopEmptyStack(void)61 void test_PopEmptyStack(void){
62 int temp = lex_pop_file();
63
64 TEST_ASSERT_FALSE(temp);
65 }
66
67
68
test_IsInteger(void)69 void test_IsInteger(void){ //boolean
70 int temp = is_integer("123");
71 TEST_ASSERT_TRUE(temp);
72 temp = is_integer("-999");
73 TEST_ASSERT_TRUE(temp);
74 temp = is_integer("0"); //what about -0?
75 TEST_ASSERT_TRUE(temp);
76 temp = is_integer("16.5");
77 TEST_ASSERT_FALSE(temp);
78 temp = is_integer("12ab");
79 TEST_ASSERT_FALSE(temp);
80 temp = is_integer("2147483647");
81 TEST_ASSERT_TRUE(temp);
82 temp = is_integer("2347483647"); //too big for signed int
83 TEST_ASSERT_FALSE(temp);
84
85 }
86
test_IsUint(void)87 void test_IsUint(void){
88 int temp;
89 temp = is_u_int("-123");
90 TEST_ASSERT_FALSE(temp);
91 temp = is_u_int("0");
92 TEST_ASSERT_TRUE(temp); //-0 fails btw
93 temp = is_u_int("2347483647"); //fits into u_int
94 TEST_ASSERT_TRUE(temp);
95 temp = is_u_int("112347483647"); //too big even for uint
96 TEST_ASSERT_TRUE(temp);
97 }
98
test_IsDouble(void)99 void test_IsDouble(void){
100 int temp;
101 temp = is_double("0");
102 TEST_ASSERT_TRUE(temp);
103 temp = is_double("123");
104 TEST_ASSERT_TRUE(temp);
105 temp = is_double("123.45"); //DOESN'T WORK WITH 123,45, not sure if intented?
106 TEST_ASSERT_TRUE(temp);
107 temp = is_double("-123.45"); //DOESN'T WORK WITH 123,45, not sure if intented?
108 TEST_ASSERT_TRUE(temp);
109 }
110
test_SpecialSymbols(void)111 void test_SpecialSymbols(void){
112 int temp ;
113 temp = is_special('a');
114 TEST_ASSERT_FALSE(temp);
115 temp = is_special('?');
116 TEST_ASSERT_FALSE(temp);
117
118 }
119
test_EOC(void)120 void test_EOC(void){
121 int temp;
122 if(old_config_style){
123 temp = is_EOC('\n');
124 TEST_ASSERT_TRUE(temp);
125 }
126 else {
127 temp = is_EOC(';');
128 TEST_ASSERT_TRUE(temp);
129 }
130 temp = is_EOC('A');
131 TEST_ASSERT_FALSE(temp);
132 temp = is_EOC('1');
133 TEST_ASSERT_FALSE(temp);
134
135 }
136
137