t-ntp_scanner.c revision 293896
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
21void test_keywordIncorrectToken(void);
22void test_keywordServerToken(void);
23void test_DropUninitializedStack(void);
24void test_IncorrectlyInitializeLexStack(void);
25void test_InitializeLexStack(void);
26
27
28void 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
34void 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
40void test_DropUninitializedStack(void){
41	lex_drop_stack();
42}
43
44void test_IncorrectlyInitializeLexStack(void){
45
46	TEST_ASSERT_FALSE(lex_init_stack(NULL,NULL));
47	lex_drop_stack();
48}
49
50void 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
61void test_PopEmptyStack(void){
62	int temp = lex_pop_file();
63
64	TEST_ASSERT_FALSE(temp);
65}
66
67
68
69void 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
87void 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
99void 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
111void 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
120void 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