diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/check_loader.c | 2 | ||||
| -rw-r--r-- | tests/check_source_parser.c | 89 | 
2 files changed, 85 insertions, 6 deletions
diff --git a/tests/check_loader.c b/tests/check_loader.c index 865d598..2d16dba 100644 --- a/tests/check_loader.c +++ b/tests/check_loader.c @@ -117,7 +117,7 @@ test_source_parse_from_file(void **state)      assert_string_equal(b_trie_lookup(t, "ASD"), "123");      assert_string_equal(b_trie_lookup(t, "FILENAME"), "bola");      assert_string_equal(b_trie_lookup(t, "CONTENT"), "<p>bola</p>\n"); -    assert_string_equal(b_trie_lookup(t, "RAW_CONTENT"), "bola"); +    assert_string_equal(b_trie_lookup(t, "EXCERPT"), "<p>bola</p>\n");      b_trie_free(t);  } diff --git a/tests/check_source_parser.c b/tests/check_source_parser.c index 0cec364..c33b4c1 100644 --- a/tests/check_source_parser.c +++ b/tests/check_source_parser.c @@ -40,10 +40,42 @@ test_source_parse(void **state)      assert_string_equal(b_trie_lookup(source, "CONTENT"),          "<h1>This is a test</h1>\n"          "<p>bola</p>\n"); -    assert_string_equal(b_trie_lookup(source, "RAW_CONTENT"), +    assert_string_equal(b_trie_lookup(source, "EXCERPT"), +        "<h1>This is a test</h1>\n" +        "<p>bola</p>\n"); +    b_trie_free(source); +} + + +static void +test_source_parse_with_excerpt(void **state) +{ +    const char *a = +        "VAR1: asd asd\n" +        "VAR2: 123chunda\n" +        "----------\n"          "# This is a test\n"          "\n" -        "bola\n"); +        "bola\n" +        "\n" +        "...\n" +        "guda\n" +        "bola\n"; +    blogc_error_t *err = NULL; +    b_trie_t *source = blogc_source_parse(a, strlen(a), &err); +    assert_null(err); +    assert_non_null(source); +    assert_int_equal(b_trie_size(source), 4); +    assert_string_equal(b_trie_lookup(source, "VAR1"), "asd asd"); +    assert_string_equal(b_trie_lookup(source, "VAR2"), "123chunda"); +    assert_string_equal(b_trie_lookup(source, "CONTENT"), +        "<h1>This is a test</h1>\n" +        "<p>bola</p>\n" +        "<p>guda\n" +        "bola</p>\n"); +    assert_string_equal(b_trie_lookup(source, "EXCERPT"), +        "<h1>This is a test</h1>\n" +        "<p>bola</p>\n");      b_trie_free(source);  } @@ -70,10 +102,37 @@ test_source_parse_with_spaces(void **state)      assert_string_equal(b_trie_lookup(source, "CONTENT"),          "<h1>This is a test</h1>\n"          "<p>bola</p>\n"); -    assert_string_equal(b_trie_lookup(source, "RAW_CONTENT"), +    assert_string_equal(b_trie_lookup(source, "EXCERPT"), +        "<h1>This is a test</h1>\n" +        "<p>bola</p>\n"); +    b_trie_free(source); +} + + +static void +test_source_parse_with_spaces_and_excerpt(void **state) +{ +    const char *a = +        "\n  \n" +        "VAR1: chunda     \t   \n" +        "\n\n" +        "BOLA: guda\n" +        "----------\n"          "# This is a test\n" -        "\n" -        "bola\n"); +        "..\n" +        "bola\n"; +    blogc_error_t *err = NULL; +    b_trie_t *source = blogc_source_parse(a, strlen(a), &err); +    assert_null(err); +    assert_non_null(source); +    assert_int_equal(b_trie_size(source), 4); +    assert_string_equal(b_trie_lookup(source, "VAR1"), "chunda"); +    assert_string_equal(b_trie_lookup(source, "BOLA"), "guda"); +    assert_string_equal(b_trie_lookup(source, "CONTENT"), +        "<h1>This is a test</h1>\n" +        "<p>bola</p>\n"); +    assert_string_equal(b_trie_lookup(source, "EXCERPT"), +        "<h1>This is a test</h1>\n");      b_trie_free(source);  } @@ -375,12 +434,31 @@ test_source_parse_invalid_separator(void **state)  } +static void +test_source_parse_invalid_excerpt_separator(void **state) +{ +    const char *a = "BOLA: asd\n---\nbola\n...#"; +    blogc_error_t *err = NULL; +    b_trie_t *source = blogc_source_parse(a, strlen(a), &err); +    assert_null(source); +    assert_non_null(err); +    assert_int_equal(err->type, BLOGC_ERROR_SOURCE_PARSER); +    assert_string_equal(err->msg, +        "Invalid excerpt separator. Must be more than one '.' characters.\n" +        "Error occurred near to '#'"); +    blogc_error_free(err); +    b_trie_free(source); +} + +  int  main(void)  {      const UnitTest tests[] = {          unit_test(test_source_parse), +        unit_test(test_source_parse_with_excerpt),          unit_test(test_source_parse_with_spaces), +        unit_test(test_source_parse_with_spaces_and_excerpt),          unit_test(test_source_parse_config_empty),          unit_test(test_source_parse_config_invalid_key),          unit_test(test_source_parse_config_no_key), @@ -399,6 +477,7 @@ main(void)          unit_test(test_source_parse_config_reserved_name10),          unit_test(test_source_parse_config_value_no_line_ending),          unit_test(test_source_parse_invalid_separator), +        unit_test(test_source_parse_invalid_excerpt_separator),      };      return run_tests(tests);  }  | 
