#include "greatest.h" #include #include #include "src/markup.h" TEST test_markup_strip(void) { char *ptr; ASSERT_STR_EQ(""", (ptr=markup_strip(g_strdup("&quot;")))); g_free(ptr); ASSERT_STR_EQ("'", (ptr=markup_strip(g_strdup("&apos;")))); g_free(ptr); ASSERT_STR_EQ("<", (ptr=markup_strip(g_strdup("&lt;")))); g_free(ptr); ASSERT_STR_EQ(">", (ptr=markup_strip(g_strdup("&gt;")))); g_free(ptr); ASSERT_STR_EQ("&", (ptr=markup_strip(g_strdup("&amp;")))); g_free(ptr); ASSERT_STR_EQ(">A ", (ptr=markup_strip(g_strdup(">A foo
bar\nbaz"), MARKUP_NO))); g_free(ptr); ASSERT_STR_EQ("foo\nbar\nbaz", (ptr=markup_transform(g_strdup("foo
bar\nbaz"), MARKUP_STRIP))); g_free(ptr); ASSERT_STR_EQ("foo\nbar\nbaz", (ptr=markup_transform(g_strdup("foo
bar\nbaz"), MARKUP_FULL))); g_free(ptr); settings.ignore_newline = true; ASSERT_STR_EQ("<i>foo</i><br>bar baz", (ptr=markup_transform(g_strdup("foo
bar\nbaz"), MARKUP_NO))); g_free(ptr); ASSERT_STR_EQ("foo bar baz", (ptr=markup_transform(g_strdup("foo
bar\nbaz"), MARKUP_STRIP))); g_free(ptr); ASSERT_STR_EQ("foo bar baz", (ptr=markup_transform(g_strdup("foo
bar\nbaz"), MARKUP_FULL))); g_free(ptr); // Test replacement of img and a tags, not renderable by pango ASSERT_STR_EQ("foo bar bar baz", (ptr=markup_transform(g_strdup("\"foo
bar\nbaz"), MARKUP_FULL))); g_free(ptr); ASSERT_STR_EQ("test ", (ptr=markup_transform(g_strdup("test \"foo image"), MARKUP_FULL))); g_free(ptr); ASSERT_STR_EQ("bar baz", (ptr=markup_transform(g_strdup("bar baz"), MARKUP_FULL))); g_free(ptr); PASS(); } TEST helper_markup_strip_a (const char *in, const char *exp, const char *urls) { // out_urls is a return parameter and the content should be ignored char *out_urls = (char *)0x04; //Chosen by a fair dice roll char *out = g_strdup(in); char *msg = g_strconcat("url: ", in, NULL); markup_strip_a(&out, &out_urls); ASSERT_STR_EQm(msg, exp, out); if (urls) { ASSERT_STR_EQm(msg, urls, out_urls); } else { ASSERT_EQm(msg, urls, out_urls); } g_free(out_urls); g_free(out); g_free(msg); PASS(); } TEST test_markup_strip_a(void) { RUN_TESTp(helper_markup_strip_a, "valid link", "valid link", "[valid] https://url.com"); RUN_TESTp(helper_markup_strip_a, "valid link", "valid link", "[valid] "); RUN_TESTp(helper_markup_strip_a, "valid link", "valid link", NULL); RUN_TESTp(helper_markup_strip_a, "valid link", "valid link", "[valid link] https://url.com"); RUN_TESTp(helper_markup_strip_a, " link", " link", NULL); RUN_TESTp(helper_markup_strip_a, " link", " link", NULL); PASS(); } TEST helper_markup_strip_img (const char *in, const char *exp, const char *urls) { // out_urls is a return parameter and the content should be ignored char *out_urls = (char *)0x04; //Chosen by a fair dice roll char *out = g_strdup(in); char *msg = g_strconcat("url: ", in, NULL); markup_strip_img(&out, &out_urls); ASSERT_STR_EQm(msg, exp, out); if (urls) { ASSERT_STR_EQm(msg, urls, out_urls); } else { ASSERT_EQm(msg, urls, out_urls); } g_free(out_urls); g_free(out); g_free(msg); PASS(); } TEST test_markup_strip_img(void) { RUN_TESTp(helper_markup_strip_img, "v img", "v [image] img", NULL); RUN_TESTp(helper_markup_strip_img, "v \"valid\" img", "v valid img", NULL); RUN_TESTp(helper_markup_strip_img, "v img", "v [image] img", "[image] url.com"); RUN_TESTp(helper_markup_strip_img, "v \"valid\" img", "v valid img", "[valid] url.com"); RUN_TESTp(helper_markup_strip_img, "v \"valid\" img", "v valid img", "[valid] url.com"); RUN_TESTp(helper_markup_strip_img, "v \"valid\" img", "v valid img", "[valid] url.com"); RUN_TESTp(helper_markup_strip_img, "i \"invalid img", "i [image] img", "[image] https://url.com"); RUN_TESTp(helper_markup_strip_img, "i \"broken\" img", "i broken img", NULL); RUN_TESTp(helper_markup_strip_img, "i \"invalid img", "i [image] img", NULL); RUN_TESTp(helper_markup_strip_img, "i \"broken\" img", "i broken img", NULL); RUN_TESTp(helper_markup_strip_img, "i \"invalid img", "i [image] img", "[image] url.com"); RUN_TESTp(helper_markup_strip_img, "i \"invalid img", "i [image] img", NULL); RUN_TESTp(helper_markup_strip_img, "i