more tests

This commit is contained in:
Roberto Alsina 2023-07-12 17:37:03 -03:00
parent 2a3fa5b189
commit 558230ea50
2 changed files with 45 additions and 1 deletions

View File

@ -2,9 +2,9 @@
## Things That May Get Done ## Things That May Get Done
* Add tests
* Produce decent error structures * Produce decent error structures
* Detect mismatched start/end like {{% foo >}} * Detect mismatched start/end like {{% foo >}}
* Inform tag type (% or <) in result
* Handle other kinds of quotes * Handle other kinds of quotes
* Handle escaping quote characters * Handle escaping quote characters
* Handle escaping the shortcode itself like \{{% foo %}} (check with hugo docs) * Handle escaping the shortcode itself like \{{% foo %}} (check with hugo docs)

44
tests.c
View File

@ -38,6 +38,48 @@ Ensure(parse, simple_shortcode)
assert_that(s.s, is_equal_to_string("{{% shortcode %}}")); assert_that(s.s, is_equal_to_string("{{% shortcode %}}"));
} }
Ensure(parse, inner_spaces_optional)
{
char *input = "foobar {{% shortcode%}}blah";
result = parse(input);
// Only 1 shortcode
assert_that(result[1].name.len, is_equal_to(0));
// It's a simple one called shortcode, no args
chunk_s(input, result[0].name);
assert_that(s.s, is_equal_to_string("shortcode"));
assert_that(result[0].matching, is_equal_to(0));
assert_that(result[0].argcount, is_equal_to(0));
// The whole shortcode is the whole thing
chunk_s(input, result[0].whole);
assert_that(s.s, is_equal_to_string("{{% shortcode%}}"));
}
Ensure(parse, multiple_shortcodes)
{
char *input = "foobar {{% shortcode %}}blah {{<sc2 >}}blahblah";
result = parse(input);
// 2 shortcodes
assert_that(result[2].name.len, is_equal_to(0));
// It's a simple one called shortcode, no args
chunk_s(input, result[0].name);
assert_that(s.s, is_equal_to_string("shortcode"));
assert_that(result[0].matching, is_equal_to(0));
assert_that(result[0].argcount, is_equal_to(0));
// The whole shortcode is the whole thing
chunk_s(input, result[0].whole);
assert_that(s.s, is_equal_to_string("{{% shortcode %}}"));
// It's a simple one called sc2, no args
chunk_s(input, result[1].name);
assert_that(s.s, is_equal_to_string("sc2"));
assert_that(result[1].matching, is_equal_to(0));
assert_that(result[1].argcount, is_equal_to(0));
// The whole shortcode is the whole thing
chunk_s(input, result[1].whole);
assert_that(s.s, is_equal_to_string("{{<sc2 >}}"));
}
Ensure(parse, matching_shortcode) Ensure(parse, matching_shortcode)
{ {
char *input = "blah {{% shortcode %}}foo bar{{% /shortcode %}} blah"; char *input = "blah {{% shortcode %}}foo bar{{% /shortcode %}} blah";
@ -65,6 +107,8 @@ int main(int argc, char **argv)
TestSuite *suite = create_test_suite(); TestSuite *suite = create_test_suite();
add_test_with_context(suite, parse, empty_string); add_test_with_context(suite, parse, empty_string);
add_test_with_context(suite, parse, simple_shortcode); add_test_with_context(suite, parse, simple_shortcode);
add_test_with_context(suite, parse, inner_spaces_optional);
add_test_with_context(suite, parse, multiple_shortcodes);
add_test_with_context(suite, parse, matching_shortcode); add_test_with_context(suite, parse, matching_shortcode);
return run_test_suite(suite, create_text_reporter()); return run_test_suite(suite, create_text_reporter());
} }