File: test-util.c

package info (click to toggle)
phog 0.1.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,268 kB
  • sloc: ansic: 14,194; xml: 2,542; sh: 78; python: 16; makefile: 10
file content (53 lines) | stat: -rw-r--r-- 1,893 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
 * Copyright (C) 2021 Purism SPC
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 *
 * Author: Guido Günther <agx@sigxcpu.org>
 */

#include "util.h"

#define phog_test_assert_cmp_markup(in, esc, cmp)                        \
  do {                                                        \
    g_autofree char *escaped = phog_util_escape_markup (in, esc);   \
    g_assert_cmpstr (escaped, ==, cmp);                              \
  } while (0);

static void
test_phog_util_escape_markup (void)
{
  /* correct markup */
  phog_test_assert_cmp_markup ("&amp;&amp;", TRUE, "&amp;&amp;");
  phog_test_assert_cmp_markup ("&quot;&quot;", TRUE, "&quot;&quot;");
  phog_test_assert_cmp_markup ("&apos;&apos;", TRUE, "&apos;&apos;");
  phog_test_assert_cmp_markup ("&lt;&lt;", TRUE, "&lt;&lt;");
  phog_test_assert_cmp_markup ("&gt;&gt;", TRUE, "&gt;&gt;");
  phog_test_assert_cmp_markup ("<b>bold</b>", TRUE, "<b>bold</b>");
  phog_test_assert_cmp_markup ("<i>italic</i>", TRUE, "<i>italic</i>");
  phog_test_assert_cmp_markup ("<u>underline</u>", TRUE, "<u>underline</u>");
  phog_test_assert_cmp_markup ("<u>&amp;</u>", TRUE, "<u>&amp;</u>");

  /* unknown tags and entities */
  phog_test_assert_cmp_markup ("&foo;&foo;", TRUE, "&amp;foo;&amp;foo;");
  phog_test_assert_cmp_markup ("<p>para</p>", TRUE, "&lt;p>para&lt;/p>");
  /* Make sure we match the full tag */
  phog_test_assert_cmp_markup ("<pp>para</pp>", TRUE, "&lt;pp>para&lt;/pp>");
  phog_test_assert_cmp_markup ("&lt;", FALSE, "&amp;lt;");

  /* broken markups */
  /* unbalanced markup */
  phog_test_assert_cmp_markup ("<p>para</i>", TRUE, "&lt;p&gt;para&lt;/i&gt;");
  phog_test_assert_cmp_markup ("<p>para</pp>", TRUE, "&lt;p>para&lt;/pp>");
}


int
main (int argc, char *argv[])
{
  gtk_test_init (&argc, &argv, NULL);

  g_test_add_func ("/phog/util/escacpe-markup", test_phog_util_escape_markup);

  return g_test_run ();
}