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
|
#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 !";
#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;}
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);
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(vl1,"loop1",l1);
return 0;
}
|