#include #include //Nested loops w/ break char t_1[] = "This is a TextText2!"; char c_1_1[] = "This is a Text!"; char t_2[] = "Check break condition before in after !"; 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 one two three four five six seven eight 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;} 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; }