1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
#include <stdio.h>
#include <ctemplates.h>
//Nested loops w/ break
char t_1[] = "This is a <TMPL_LOOP name=\"loop1\"><TMPL_LOOP name=\"loop2\">Text<TMPL_BREAK>Text2<TMPL_END><TMPL_END>!";
char c_1_1[] = "This is a Text!";
char t_2[] = "Check break condition <TMPL_LOOP name=\"loop1\">before <TMPL_IF name=\"test\">in <TMPL_BREAK><TMPL_END>after <TMPL_END>!";
char c_2_1[] = "Check break condition !";
char c_2_2[] = "Check break condition before after !";
char c_2_3[] = "Check break condition before after before after before after !";
char c_2_4[] = "Check break condition before in !";
char c_2_5[] = "Check break condition before after before in !";
char t_3[] = "Check variable scope after breaking loop <TMPL_LOOP name=\"loop1\">one <TMPL_IF name=\"test1\">two <TMPL_BREAK>three <TMPL_END>four <TMPL_LOOP name=\"loop2\">five <TMPL_BREAK level=2>six <TMPL_END>seven <TMPL_END>eight <TMPL_VAR name=\"after\" default=\"\">nine.";
char c_3_1[] = "Check variable scope after breaking loop one two eight nine.";//loop1 has test1 as a var, after is not a variable
char c_3_2[] = "Check variable scope after breaking loop one two eight and a half nine.";//loop1 has test1 as a var, after is "and a half "
char c_3_3[] = "Check variable scope after breaking loop one four five eight nine.";//loop1 does not have test1, loop1 has loop2, after is not a variable
char c_3_4[] = "Check variable scope after breaking loop one four five eight and a half nine.";//loop1 does not have test1, loop1 has loop2, after is "and a half "
#define log(x) printf(x)
#define check(n,n2,a,b) if(strcmp(a,b) != 0){fprintf(stderr, "Error in test 2.%d.%d\n",n,n2);printf("Result should have been '%s'\n was '%s'\n", b, a); if(t->error) printf(TMPL_err(t, NULL)); return -1;}else{printf("\n\n##########\n##Test %d.%d passed\n##########\n\n\n",n,n2);}
int main(){
log("Running tests2\n");
struct TMPL_templates* t;
struct TMPL_varlist *vl,*vl1,*vl2;
struct TMPL_loop *l1,*l2;
char* ret;
size_t dummy;
/*Test 1: Variable*/
t = TMPL_alloc_template(t_1);
vl = TMPL_alloc_varlist();
TMPL_add_var_to_varlist(vl,"what","template");
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
l2 = TMPL_alloc_loop();
vl2 = TMPL_alloc_varlist();
TMPL_add_varlist_to_loop(l2,vl2);
TMPL_add_loop_to_varlist(vl1,"loop2",l2);
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(1,1,ret,c_1_1);
/*if(strcmp(ret,c_1_1) != 0){*/
/*fprintf(stderr,"Error in test file 2, test 1\n");*/
/*printf("Result should have been '%s'\n was '%s'\n",c_1_1,ret);*/
/*if(t->error)*/
/*printf(TMPL_err(t, NULL));*/
/*return -1;*/
/*}*/
TMPL_free_template(t);
TMPL_free_varlist(vl);
log("Test 1 complete\n");
t = TMPL_alloc_template(t_2);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(2,1,ret,c_2_1);
log("Test 2 complete\n");
TMPL_free_template(t);
printf("Freed template...\n");
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_2);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(2,2,ret,c_2_2);
log("Test 3 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_2);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
for(int i = 0; i < 3; i++){
vl1 = TMPL_alloc_varlist();
TMPL_add_varlist_to_loop(l1, vl1);
}
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(2,3,ret,c_2_3);
log("Test 4 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_2);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
TMPL_add_var_to_varlist(vl1,"test","true");
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(2,4,ret,c_2_4);
log("Test 5 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_2);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
vl2 = TMPL_alloc_varlist();
TMPL_add_var_to_varlist(vl2,"test","true");
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_varlist_to_loop(l1,vl2);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(2,5,ret,c_2_5);
log("Test 6 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_3);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
TMPL_add_var_to_varlist(vl1,"test1","true");
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(3,1,ret,c_3_1);
log("Test 7 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_3);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
TMPL_add_var_to_varlist(vl1,"test1","true");
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
TMPL_add_var_to_varlist(vl,"after","and a half ");
ret = TMPL_render(t,vl,&dummy);
check(3,2,ret,c_3_2);
log("Test 8 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
t = TMPL_alloc_template(t_3);
vl = TMPL_alloc_varlist();
l1 = TMPL_alloc_loop();
vl1 = TMPL_alloc_varlist();
l2 = TMPL_alloc_loop();
vl2 = TMPL_alloc_varlist();
TMPL_add_varlist_to_loop(l2,vl2);
TMPL_add_loop_to_varlist(vl1,"loop2",l2);
TMPL_add_varlist_to_loop(l1,vl1);
TMPL_add_loop_to_varlist(vl,"loop1",l1);
ret = TMPL_render(t,vl,&dummy);
check(3,3,ret,c_3_3);
log("Test 9 complete\n");
TMPL_free_template(t);
TMPL_free_varlist(vl);
return 0;
}
|