aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/check_content_parser.c625
1 files changed, 625 insertions, 0 deletions
diff --git a/tests/check_content_parser.c b/tests/check_content_parser.c
index dc3485e..dfb1ffb 100644
--- a/tests/check_content_parser.c
+++ b/tests/check_content_parser.c
@@ -1014,6 +1014,444 @@ test_content_parse_ordered_list_crlf(void **state)
}
+char*
+__wrap_blogc_directive_loader(const char *name, const char *argument,
+ b_trie_t *params)
+{
+ assert_string_equal(name, mock_type(const char*));
+ const char *arg = mock_type(const char*);
+ if (arg == NULL)
+ assert_null(argument);
+ else
+ assert_string_equal(argument, arg);
+ assert_int_equal(b_trie_size(params), mock_type(unsigned int));
+
+ for (unsigned int i = 0; i < b_trie_size(params); i++) {
+ const char *key = mock_type(const char*);
+ const char *value = mock_type(const char*);
+ assert_string_equal(b_trie_lookup(params, key), value);
+ }
+
+ return b_strdup("CHUNDA\n");
+}
+
+
+static void
+test_content_parse_directive(void **state)
+{
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 0);
+ char *html = blogc_content_parse(
+ ".. bola::",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola::\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola:: ",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola:: \n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola::\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola::\n"
+ " :asd: qwe",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola::\n"
+ " :asd: qwe\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola::\r\n"
+ "\t:asd: qwe\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola::\n"
+ "\t\t:asd: qwe\n"
+ "\t\t:zxc: vbn",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola::\n"
+ " :asd: qwe\n"
+ " :zxc: vbn\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola::\r\n"
+ " :asd: qwe\r\n"
+ " :zxc: vbn\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 3);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "bola");
+ html = blogc_content_parse(
+ "# foo\n"
+ "\n"
+ ".. bola::\n"
+ " :asd: qwe\n"
+ " :ert: zxvc\n"
+ " :qwe: bola\n"
+ "\n"
+ "bola", NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<h1 id=\"foo\">foo</h1>\n"
+ "CHUNDA\n"
+ "<p>bola</p>\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, NULL);
+ will_return(__wrap_blogc_directive_loader, 3);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "bola");
+ html = blogc_content_parse(
+ "# foo\r\n"
+ "\r\n"
+ ".. bola::\r\n"
+ " :asd: qwe\r\n"
+ " :ert: zxvc\r\n"
+ " :qwe: bola\r\n"
+ "\r\n"
+ "bola", NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<h1 id=\"foo\">foo</h1>\r\n"
+ "CHUNDA\n"
+ "<p>bola</p>\r\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola:: chunda",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola:: chunda\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 0);
+ html = blogc_content_parse(
+ ".. bola:: chunda\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola:: chunda\n"
+ " :asd: qwe",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola:: chunda\n"
+ " :asd: qwe\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 1);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ html = blogc_content_parse(
+ ".. bola:: chunda\r\n"
+ " :asd: qwe\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola:: chunda\n"
+ " :asd: qwe\n"
+ " :zxc: vbn",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola:: chunda\n"
+ " :asd: qwe\n"
+ " :zxc: vbn\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "zxc");
+ will_return(__wrap_blogc_directive_loader, "vbn");
+ html = blogc_content_parse(
+ ".. bola:: chunda\r\n"
+ " :asd: qwe\r\n"
+ " :zxc: vbn\r\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "CHUNDA\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 3);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "bola");
+ html = blogc_content_parse(
+ "# foo\n"
+ "\n"
+ ".. bola:: chunda\n"
+ " :asd: qwe\n"
+ " :ert: zxvc\n"
+ " :qwe: bola\n"
+ "\n"
+ "bola", NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<h1 id=\"foo\">foo</h1>\n"
+ "CHUNDA\n"
+ "<p>bola</p>\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 3);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "bola");
+ html = blogc_content_parse(
+ "# foo\r\n"
+ "\r\n"
+ ".. bola:: chunda\r\n"
+ " :asd: qwe\r\n"
+ " :ert: zxvc\r\n"
+ " :qwe: bola\r\n"
+ "\r\n"
+ "bola", NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<h1 id=\"foo\">foo</h1>\r\n"
+ "CHUNDA\n"
+ "<p>bola</p>\r\n");
+ free(html);
+
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "chunda");
+ will_return(__wrap_blogc_directive_loader, 3);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "bola");
+ will_return(__wrap_blogc_directive_loader, "bolao");
+ will_return(__wrap_blogc_directive_loader, "chund");
+ will_return(__wrap_blogc_directive_loader, 2);
+ will_return(__wrap_blogc_directive_loader, "asd");
+ will_return(__wrap_blogc_directive_loader, "qwe");
+ will_return(__wrap_blogc_directive_loader, "ert");
+ will_return(__wrap_blogc_directive_loader, "zxvc");
+ html = blogc_content_parse(
+ "# foo\r\n"
+ "\r\n"
+ ".. bola:: chunda\r\n"
+ " :asd: qwe\r\n"
+ " :ert: zxvc\r\n"
+ " :qwe: bola\r\n"
+ "\r\n"
+ ".. bolao:: chund\r\n"
+ " :asd: qwe\r\n"
+ " :ert: zxvc\r\n"
+ "\r\n"
+ "bola", NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<h1 id=\"foo\">foo</h1>\r\n"
+ "CHUNDA\n"
+ "CHUNDA\n"
+ "<p>bola</p>\r\n");
+ free(html);
+}
+
+
static void
test_content_parse_invalid_excerpt(void **state)
{
@@ -1333,6 +1771,191 @@ test_content_parse_invalid_ordered_list(void **state)
static void
+test_content_parse_invalid_directive(void **state)
+{
+ char *html = blogc_content_parse(
+ ".. ",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. </p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. \n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. </p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. ",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. <br /></p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. \n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. <br /></p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. a",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. a</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. a\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. a</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd:",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd:</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd:\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd:</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :a",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :a</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :a\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :a</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as:",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as:</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as:\n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as:</p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as: ",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as: </p>\n");
+ free(html);
+
+ html = blogc_content_parse(
+ ".. asd::\n"
+ " :as: \n",
+ NULL);
+ assert_non_null(html);
+ assert_string_equal(html,
+ "<p>.. asd::\n"
+ " :as: </p>\n");
+ free(html);
+}
+
+
+static void
test_content_parse_inline(void **state)
{
char *html = blogc_content_parse_inline(
@@ -1682,6 +2305,7 @@ main(void)
unit_test(test_content_parse_unordered_list_crlf),
unit_test(test_content_parse_ordered_list),
unit_test(test_content_parse_ordered_list_crlf),
+ unit_test(test_content_parse_directive),
unit_test(test_content_parse_invalid_excerpt),
unit_test(test_content_parse_invalid_header),
unit_test(test_content_parse_invalid_header_empty),
@@ -1690,6 +2314,7 @@ main(void)
unit_test(test_content_parse_invalid_horizontal_rule),
unit_test(test_content_parse_invalid_unordered_list),
unit_test(test_content_parse_invalid_ordered_list),
+ unit_test(test_content_parse_invalid_directive),
unit_test(test_content_parse_inline),
unit_test(test_content_parse_inline_em),
unit_test(test_content_parse_inline_strong),