#include "../src/markup.c"
#include "greatest.h"
TEST test_markup_strip(void)
{
char *ptr;
ASSERT_STR_EQ(""", (ptr=markup_strip(g_strdup("""))));
g_free(ptr);
ASSERT_STR_EQ("'", (ptr=markup_strip(g_strdup("'"))));
g_free(ptr);
ASSERT_STR_EQ("<", (ptr=markup_strip(g_strdup("<"))));
g_free(ptr);
ASSERT_STR_EQ(">", (ptr=markup_strip(g_strdup(">"))));
g_free(ptr);
ASSERT_STR_EQ("&", (ptr=markup_strip(g_strdup("&"))));
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
image"), MARKUP_FULL)));
g_free(ptr);
ASSERT_STR_EQ("bar baz", (ptr=markup_transform(g_strdup("bar baz"), MARKUP_FULL)));
g_free(ptr);
ASSERT_STR_EQ("Ψ", (ptr=markup_transform(g_strdup("Ψ"), MARKUP_FULL)));
free(ptr);
ASSERT_STR_EQ("Ψ Ψ", (ptr=markup_transform(g_strdup("Ψ Ψ"), MARKUP_FULL)));
free(ptr);
ASSERT_STR_EQ("> <", (ptr=markup_transform(g_strdup("> <"), MARKUP_FULL)));
free(ptr);
ASSERT_STR_EQ("&invalid; &#abc; &#xG;", (ptr=markup_transform(g_strdup("&invalid; abc; G;"), MARKUP_FULL)));
free(ptr);
ASSERT_STR_EQ("&; &#; &#x;", (ptr=markup_transform(g_strdup("&; "), MARKUP_FULL)));
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
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
img", "v valid img", "[valid] url.com");
RUN_TESTp(helper_markup_strip_img, "v
img", "v valid img", "[valid] url.com");
RUN_TESTp(helper_markup_strip_img, "v
img", "v valid img", "[valid] url.com");
RUN_TESTp(helper_markup_strip_img, "i
img", "i [image] img", "[image] https://url.com");
RUN_TESTp(helper_markup_strip_img, "i
img", "i broken img", NULL);
RUN_TESTp(helper_markup_strip_img, "i
img", "i [image] img", NULL);
RUN_TESTp(helper_markup_strip_img, "i
img", "i broken img", NULL);
RUN_TESTp(helper_markup_strip_img, "i
img", "i [image] img", "[image] url.com");
RUN_TESTp(helper_markup_strip_img, "i
img", "i [image] img", NULL);
RUN_TESTp(helper_markup_strip_img, "i 