/* * blogc: A blog compiler. * Copyright (C) 2015 Rafael G. Martins * * This program can be distributed under the terms of the BSD License. * See the file COPYING. */ #ifdef HAVE_CONFIG_H #include #endif /* HAVE_CONFIG_H */ #include #include #include #include #include #include "../src/content-parser.h" #include "../src/utils/utils.h" static void test_content_parse(void **state) { char *html = blogc_content_parse( "# um\n" "## dois\n" "### tres\n" "#### quatro\n" "##### cinco\n" "###### seis\n" "\n" "bola\n" "chunda\n" "\n" "> bola\n" "> guda\n" "> buga\n" "> \n" "> asd\n" "\n" " bola\n" " asd\n" " qwewer\n" "\n" "+++\n" "1. chunda\n" "3. fuuuu\n" "\n" "+ chunda2\n" "+ fuuuu2\n" "\n" "\n" "\n" "guda\n" "yay\n" "\n" "**bola**\n"); assert_non_null(html); assert_string_equal(html, "

um

\n" "

dois

\n" "

tres

\n" "

quatro

\n" "
cinco
\n" "
seis
\n" "

bola\n" "chunda

\n" "

bola\n" "guda\n" "buga

\n" "
asd
\n" "
\n" "
bola\n"
        " asd\n"
        "qwewer
\n" "
\n" "
    \n" "
  1. chunda
  2. \n" "
  3. fuuuu
  4. \n" "
\n" "
    \n" "
  • chunda2
  • \n" "
  • fuuuu2
  • \n" "
\n" "\n" "

guda\n" "yay

\n" "

bola

\n"); free(html); } void test_content_parse_header(void **state) { char *html = blogc_content_parse("## bola"); assert_non_null(html); assert_string_equal(html, "

bola

\n"); free(html); html = blogc_content_parse("## bola\n"); assert_non_null(html); assert_string_equal(html, "

bola

\n"); free(html); html = blogc_content_parse( "bola\n" "\n" "## bola\n" "\n" "guda\n"); assert_non_null(html); assert_string_equal(html, "

bola

\n" "

bola

\n" "

guda

\n"); free(html); } void test_content_parse_html(void **state) { char *html = blogc_content_parse("
\n
"); assert_non_null(html); assert_string_equal(html, "
\n
\n"); free(html); html = blogc_content_parse("
\n
\n"); assert_non_null(html); assert_string_equal(html, "
\n
\n"); free(html); html = blogc_content_parse( "bola\n" "\n" "
\n" "
\n" "\n" "chunda\n"); assert_non_null(html); assert_string_equal(html, "

bola

\n" "
\n
\n" "

chunda

\n"); free(html); } void test_content_parse_blockquote(void **state) { char *html = blogc_content_parse("> bola\n> guda"); assert_non_null(html); assert_string_equal(html, "

bola\n" "guda

\n" "
\n"); free(html); html = blogc_content_parse("> bola\n> guda\n"); assert_non_null(html); assert_string_equal(html, "

bola\n" "guda

\n" "
\n"); free(html); html = blogc_content_parse( "bola\n" "\n" "> bola\n" "> guda\n" "\n" "chunda\n"); 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) { char *html = blogc_content_parse(" bola\n guda"); assert_non_null(html); assert_string_equal(html, "
bola\n"
        "guda
\n"); free(html); html = blogc_content_parse(" bola\n guda\n"); assert_non_null(html); assert_string_equal(html, "
bola\n"
        "guda
\n"); free(html); html = blogc_content_parse( "bola\n" "\n" " bola\n" " guda\n" "\n" "chunda\n"); 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) { char *html = blogc_content_parse( "asd\n" "\n" "##bola\n"); assert_non_null(html); assert_string_equal(html, "

asd

\n" "

##bola

\n"); free(html); } void test_content_parse_invalid_header_empty(void **state) { char *html = blogc_content_parse( "asd\n" "\n" "##\n" "\n" "qwe\n"); assert_non_null(html); assert_string_equal(html, "

asd

\n" "

##\n" "\n" "qwe

\n"); free(html); } void test_content_parse_invalid_blockquote(void **state) { char *html = blogc_content_parse( "> asd\n" "> bola\n" "> foo\n"); assert_non_null(html); assert_string_equal(html, "

> asd\n" "> bola\n" "> foo

\n"); free(html); } void test_content_parse_invalid_code(void **state) { char *html = blogc_content_parse( " asd\n" " bola\n" " foo\n"); assert_non_null(html); assert_string_equal(html, "

asd\n" " bola\n" " foo

\n"); free(html); } void test_content_parse_inline(void **state) { char *html = blogc_content_parse_inline( "**bola***asd* [![lol](http://google.com/lol.png) **lol** " "\\[asd\\]\\(qwe\\)](http://google.com) ``chunda``"); assert_string_equal(html, "bolaasd " " lol [asd](qwe) " "chunda"); free(html); html = blogc_content_parse_inline("*bola*"); assert_string_equal(html, "bola"); free(html); } 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), unit_test(test_content_parse_inline), }; return run_tests(tests); }