aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2015-04-17 01:47:41 -0300
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2015-04-17 01:47:41 -0300
commit047e4e3753c597628024847a524d44ca67fa1382 (patch)
tree8c0d63ecd8d395815a4eee155c2ce6283e0e7fab /tests
parentf5da9cc42acc79d7dda78e57fab8a1b8d7aa6a7d (diff)
downloadblogc-047e4e3753c597628024847a524d44ca67fa1382.tar.gz
blogc-047e4e3753c597628024847a524d44ca67fa1382.tar.bz2
blogc-047e4e3753c597628024847a524d44ca67fa1382.zip
replaced leg-based parser with handmade parser for source files
Diffstat (limited to 'tests')
-rw-r--r--tests/check_source_parser.c (renamed from tests/check_source_grammar.c)13
-rw-r--r--tests/check_template_grammar.c47
2 files changed, 55 insertions, 5 deletions
diff --git a/tests/check_source_grammar.c b/tests/check_source_parser.c
index b2f581b..2f5880a 100644
--- a/tests/check_source_grammar.c
+++ b/tests/check_source_parser.c
@@ -14,19 +14,21 @@
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
-#include "../src/source-grammar.h"
+#include <string.h>
+#include "../src/source-parser.h"
static void
test_source_parse(void **state)
{
- blogc_source_t *source = blogc_source_parse(
+ const char *a =
"VAR1: asd asd\n"
"VAR2: 123chunda\n"
"----------\n"
"# This is a test\n"
"\n"
- "bola\n");
+ "bola\n";
+ blogc_source_t *source = blogc_source_parse(a, strlen(a));
assert_non_null(source);
assert_int_equal(b_trie_size(source->config), 2);
assert_string_equal(b_trie_lookup(source->config, "VAR1"), "asd asd");
@@ -42,7 +44,7 @@ test_source_parse(void **state)
static void
test_source_parse_with_spaces(void **state)
{
- blogc_source_t *source = blogc_source_parse(
+ const char *a =
"\n \n"
"VAR1: chunda \t \n"
"\n\n"
@@ -50,7 +52,8 @@ test_source_parse_with_spaces(void **state)
"----------\n"
"# This is a test\n"
"\n"
- "bola\n");
+ "bola\n";
+ blogc_source_t *source = blogc_source_parse(a, strlen(a));
assert_non_null(source);
assert_int_equal(b_trie_size(source->config), 2);
assert_string_equal(b_trie_lookup(source->config, "VAR1"), "chunda");
diff --git a/tests/check_template_grammar.c b/tests/check_template_grammar.c
index ffad8fb..3b4dcca 100644
--- a/tests/check_template_grammar.c
+++ b/tests/check_template_grammar.c
@@ -88,11 +88,58 @@ test_template_parse(void **state)
}
+static void
+test_template_parse_html(void **state)
+{
+ b_slist_t *stmts = blogc_template_parse(
+ "<html>\n"
+ " <head>\n"
+ " {% block single_source %}\n"
+ " <title>My cool blog >> {{ TITLE }}</title>\n"
+ " {% endblock %}\n"
+ " {% block multiple_sources %}\n"
+ " <title>My cool blog - Main page</title>\n"
+ " {% endblock %}\n"
+ " </head>\n"
+ " <body>\n"
+ " <h1>My cool blog</h1>\n"
+ " {% block single_source %}\n"
+ " <h2>{{ TITLE }}</h2>\n"
+ " {% if DATE %}<h4>Published in: {{ DATE }}</h4>{% endif %}\n"
+ " <pre>{{ CONTENT }}</pre>\n"
+ " {% endblock %}\n"
+ " {% block multiple_sources_once %}<ul>{% endblock %}\n"
+ " {% block multiple_sources %}<p><a href=\"{{ FILENAME }}.html\">"
+ "{{ TITLE }}</a>{% if DATE %} - {{ DATE }}{% endif %}</p>{% endblock %}\n"
+ " {% block multiple_sources_once %}</ul>{% endblock %}\n"
+ " </body>\n"
+ "</html>\n");
+ assert_non_null(stmts);
+ blogc_assert_template_stmt(stmts, "<html>\n <head>\n ",
+ BLOGC_TEMPLATE_CONTENT_STMT);
+ blogc_assert_template_stmt(stmts->next, "single_source",
+ BLOGC_TEMPLATE_BLOCK_STMT);
+ blogc_assert_template_stmt(stmts->next->next,
+ "\n <title>My cool blog >> ", BLOGC_TEMPLATE_CONTENT_STMT);
+ blogc_assert_template_stmt(stmts->next->next->next, "TITLE",
+ BLOGC_TEMPLATE_VARIABLE_STMT);
+ blogc_assert_template_stmt(stmts->next->next->next->next,
+ "</title>\n ", BLOGC_TEMPLATE_CONTENT_STMT);
+
+
+
+
+
+ blogc_template_free_stmts(stmts);
+}
+
+
int
main(void)
{
const UnitTest tests[] = {
unit_test(test_template_parse),
+ unit_test(test_template_parse_html),
};
return run_tests(tests);
}