From af37850094238ae94ee4a48588a8490a210f9ad6 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Mon, 4 May 2015 22:34:37 -0300 Subject: content-parser: minor fixes. added tests --- tests/check_content_parser.c | 231 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) (limited to 'tests') diff --git a/tests/check_content_parser.c b/tests/check_content_parser.c index df14df3..b3e7092 100644 --- a/tests/check_content_parser.c +++ b/tests/check_content_parser.c @@ -96,11 +96,242 @@ test_content_parse(void **state) } +void +test_content_parse_header(void **state) +{ + const char *a = "## bola"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, "

bola

\n"); + free(html); + a = "## bola\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, "

bola

\n"); + free(html); + a = + "bola\n" + "\n" + "## bola\n" + "\n" + "guda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola

\n" + "

bola

\n" + "

guda

\n"); + free(html); +} + + +void +test_content_parse_html(void **state) +{ + const char *a = "
\n
"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, "
\n
\n"); + free(html); + a = "
\n
\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, "
\n
\n"); + free(html); + a = + "bola\n" + "\n" + "
\n" + "
\n" + "\n" + "chunda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola

\n" + "
\n
\n" + "

chunda

\n"); + free(html); +} + + +void +test_content_parse_blockquote(void **state) +{ + const char *a = "> bola\n> guda"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola\n" + "guda

\n" + "
\n"); + free(html); + a = "> bola\n> guda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola\n" + "guda

\n" + "
\n"); + free(html); + a = + "bola\n" + "\n" + "> bola\n" + "> guda\n" + "\n" + "chunda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola

\n" + "

bola\n" + "guda

\n" + "
\n" + "

chunda

\n"); + free(html); +} + + +void +test_content_parse_code(void **state) +{ + const char *a = " bola\n guda"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "
bola\n"
+        "guda
\n"); + free(html); + a = " bola\n guda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "
bola\n"
+        "guda
\n"); + free(html); + a = + "bola\n" + "\n" + " bola\n" + " guda\n" + "\n" + "chunda\n"; + html = blogc_content_parse(a, strlen(a), &err); + assert_null(err); + assert_non_null(html); + assert_string_equal(html, + "

bola

\n" + "
bola\n"
+        "guda
\n" + "

chunda

\n"); + free(html); +} + + +void +test_content_parse_invalid_header(void **state) +{ + const char *a = + "asd\n" + "\n" + "##bola\n"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_non_null(err); + assert_null(html); + assert_int_equal(err->type, BLOGC_ERROR_CONTENT_PARSER); + assert_string_equal(err->msg, + "Malformed header, no space or tab after '#'\n" + "Error occurred near to 'bola'"); + blogc_error_free(err); +} + + +void +test_content_parse_invalid_header_empty(void **state) +{ + const char *a = + "asd\n" + "\n" + "##\n" + "\n" + "qwe\n"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_non_null(err); + assert_null(html); + assert_int_equal(err->type, BLOGC_ERROR_CONTENT_PARSER); + assert_string_equal(err->msg, + "Malformed header, no space or tab after '#'"); + blogc_error_free(err); +} + + +void +test_content_parse_invalid_blockquote(void **state) +{ + const char *a = + "> asd\n" + "> bola\n" + "> foo\n"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_non_null(err); + assert_null(html); + assert_int_equal(err->type, BLOGC_ERROR_CONTENT_PARSER); + assert_string_equal(err->msg, + "Malformed blockquote, must use same prefix as previous line(s): > "); + blogc_error_free(err); +} + + +void +test_content_parse_invalid_code(void **state) +{ + const char *a = + " asd\n" + " bola\n" + " foo\n"; + blogc_error_t *err = NULL; + char *html = blogc_content_parse(a, strlen(a), &err); + assert_non_null(err); + assert_null(html); + assert_int_equal(err->type, BLOGC_ERROR_CONTENT_PARSER); + assert_string_equal(err->msg, + "Malformed code block, must use same prefix as previous line(s): ' '"); + blogc_error_free(err); +} + + int main(void) { const UnitTest tests[] = { unit_test(test_content_parse), + unit_test(test_content_parse_header), + unit_test(test_content_parse_html), + unit_test(test_content_parse_blockquote), + unit_test(test_content_parse_code), + unit_test(test_content_parse_invalid_header), + unit_test(test_content_parse_invalid_header_empty), + unit_test(test_content_parse_invalid_blockquote), + unit_test(test_content_parse_invalid_code), }; return run_tests(tests); } -- cgit v1.2.3-18-g5258