aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2018-12-05 18:30:47 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2018-12-05 18:30:47 -0500
commitea5f2d56933d04975ef34b85372a577ad433950f (patch)
tree8a9c31029e4216f8229d11bade823ac214658119
parent03d363a337eea7fce725efbd51f99449e06395ef (diff)
downloadlibctemplates-ea5f2d56933d04975ef34b85372a577ad433950f.tar.gz
libctemplates-ea5f2d56933d04975ef34b85372a577ad433950f.tar.bz2
libctemplates-ea5f2d56933d04975ef34b85372a577ad433950f.zip
Allow bstringify to accept a null size
Allow bstringify (and therefore TMPL_render()) to accept NULL as the size. When NULL is passed as the size, the size of the resulting string is not stored anywhere.
-rw-r--r--src/fbuf.c3
-rw-r--r--t/test_1.c26
2 files changed, 23 insertions, 6 deletions
diff --git a/src/fbuf.c b/src/fbuf.c
index 69a3475..33a7d6e 100644
--- a/src/fbuf.c
+++ b/src/fbuf.c
@@ -115,7 +115,8 @@ char* bstringify(struct TMPL_buf* b, size_t* size){
b->head = single;
b->tail = single;
- *size = b->total_len;
+ if(size != NULL)
+ *size = b->total_len;
return single->data;
}
diff --git a/t/test_1.c b/t/test_1.c
index c881701..4fc8b72 100644
--- a/t/test_1.c
+++ b/t/test_1.c
@@ -73,7 +73,10 @@ char t_18[] = "Test var with spaces between attribute and name:<TMPL_VAR name
char c_18_1[] = "Test var with spaces between attribute and name:Correct!";
char c_18_2[] = "Test var with spaces between attribute and name:Blah";
+#define log(x) printf(x)
+
int main(){
+ log("Running tests\n");
struct TMPL_templates* t;
struct TMPL_varlist* vl;
char* ret;
@@ -91,6 +94,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 1 complete\n");
/*Test 2: Variable with default parameter*/
t = TMPL_alloc_template(t_2);
@@ -103,6 +107,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 2 complete\n");
/*Test 3: Template that starts with a tag*/
t = TMPL_alloc_template(t_3);
@@ -116,6 +121,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 3 complete\n");
/*Test 4: Starts with a tag with a default value*/
t = TMPL_alloc_template(t_4);
@@ -128,6 +134,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 4 complete\n");
/*Test 5: Ends with a tag*/
t = TMPL_alloc_template(t_5);
@@ -141,6 +148,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 5 complete\n");
/*Test 6: Ends with a tag with a default value*/
t = TMPL_alloc_template(t_6);
@@ -153,6 +161,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 6 complete\n");
/*Test 7: Simple loop*/
t = TMPL_alloc_template(t_7);
@@ -205,6 +214,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 7 complete\n");
/*Test 8: Simple if*/
t = TMPL_alloc_template(t_8);
@@ -235,6 +245,7 @@ int main(){
}
TMPL_free_template(t);
TMPL_free_varlist(vl);
+ log("Test 8 complete\n");
/*Test 9: Use if to check for variable existance*/
t = TMPL_alloc_template(t_9);
@@ -256,6 +267,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 9 complete\n");
/*Test 10: If with else section, if used to check for existance*/
t = TMPL_alloc_template(t_10);
@@ -277,6 +289,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 10 complete\n");
/*Test 11: If with else section, if used for equivalence*/
t = TMPL_alloc_template(t_11);
@@ -298,6 +311,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 11 complete\n");
/*Test 12: If with elseif, no else*/
t = TMPL_alloc_template(t_12);
@@ -328,6 +342,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 12 complete\n");
/*Test 13: If with elseif, no else*/
t = TMPL_alloc_template(t_13);
@@ -358,6 +373,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 13 complete\n");
/*Test 14: If with with empty value*/
t = TMPL_alloc_template(t_14);
@@ -371,6 +387,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 14 complete\n");
/*Test 15: Elseif with with empty value*/
t = TMPL_alloc_template(t_15);
@@ -384,6 +401,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 15 complete\n");
/*Test 16: var with multiple spaces in between*/
t = TMPL_alloc_template(t_16);
@@ -397,6 +415,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 16 complete\n");
/*Test 17: var with multiple spaces in between, and a default*/
t = TMPL_alloc_template(t_17);
@@ -409,16 +428,12 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 17 complete\n");
- /*printf("Before test 18\n");*/
/*Test 18: spaces between attribute and value*/
t = TMPL_alloc_template(t_18);
- /*print_ast(t->roottag);*/
- /*printf("Alloced template\n");*/
vl = TMPL_alloc_varlist();
- /*printf("Made varles\n");*/
ret = TMPL_render(t,vl,&dummy);
- /*printf("Rendered\n");*/
if(strcmp(ret,c_18_1) != 0){
fprintf(stderr, "Error in test file 1, test 18\n");
printf("Result should have been '%s\n was '%s'\n",c_18_1,ret);
@@ -426,6 +441,7 @@ int main(){
}
TMPL_free_varlist(vl);
TMPL_free_template(t);
+ log("Test 18 complete\n");
return 0;
}