talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

utils_get_uri_part_test.c (3159B)


      1 #include "config.h"
      2 
      3 #include <stdio.h>
      4 #include <glib.h>
      5 
      6 #include "utils.h"
      7 
      8 #include "mock_prefs_common_get_use_shred.h"
      9 #include "mock_prefs_common_get_flush_metadata.h"
     10 
     11 struct td_get_uri_part {
     12 	gchar *str;
     13 	gboolean ret;
     14 	guint uri_length;
     15 };
     16 
     17 struct td_get_uri_part td_get_uri_basic = {
     18 	"http://www.example.com", TRUE, 22
     19 };
     20 struct td_get_uri_part td_get_uri_slash = {
     21 	"http://www.example.com/", TRUE, 23
     22 };
     23 struct td_get_uri_part td_get_uri_question = {
     24 	"http://www.example.com/foo?", TRUE, 27
     25 };
     26 struct td_get_uri_part td_get_uri_parenthesis = {
     27 	"http://www.example.com/f(o)o", TRUE, 28
     28 };
     29 struct td_get_uri_part td_get_uri_brace = {
     30 	"http://www.example.com/f[oo", TRUE, 24
     31 };
     32 struct td_get_uri_part td_get_uri_umlaut = {
     33 	"http://www.examöple.com", TRUE, 24
     34 };
     35 struct td_get_uri_part td_get_uri_kanji = {
     36 	"http://www.漢字.com", TRUE, 21
     37 };
     38 struct td_get_uri_part td_get_uri_nonprintable = {
     39 	"http://www.exam\x01ple.com", TRUE, 15
     40 };
     41 
     42 #define URI "http://www.example.com"
     43 static void
     44 test_utils_get_uri_part_nowhitespace()
     45 {
     46 	gboolean ret;
     47 	gchar *str = g_strdup("Nowhitespace"URI"nowhitespace");
     48 	const gchar *bp, *ep;
     49 
     50 	ret = get_uri_part(str, str + 12, &bp, &ep, FALSE);
     51 
     52 	g_assert_true(ret);
     53 	g_assert_true(ep == str + strlen(str));
     54 
     55 	g_free(str);
     56 }
     57 
     58 static void
     59 test_utils_get_uri_part_whitespace()
     60 {
     61 	gboolean ret;
     62 	gchar *str = g_strdup("Whitespace "URI" whitespace");
     63 	const gchar *bp, *ep;
     64 
     65 	ret = get_uri_part(str, str + 11, &bp, &ep, FALSE);
     66 
     67 	g_assert_true(ret);
     68 	g_assert_true(ep == bp + strlen(URI));
     69 
     70 	g_free(str);
     71 }
     72 #undef URI
     73 
     74 static void
     75 test_utils_get_uri_part(gconstpointer user_data)
     76 {
     77 	const struct td_get_uri_part *data = (struct td_get_uri_part *)user_data;
     78 	gboolean ret;
     79 	const gchar *bp, *ep;
     80 
     81 	ret = get_uri_part(data->str, data->str, &bp, &ep, FALSE);
     82 
     83 	g_assert_nonnull(bp);
     84 	g_assert_nonnull(ep);
     85 
     86 	g_assert_true(ret == data->ret);
     87 	g_assert_true(ep >= bp);
     88 	g_assert_true(bp + data->uri_length == ep);
     89 }
     90 
     91 int
     92 main(int argc, char *argv[])
     93 {
     94 	g_test_init(&argc, &argv, NULL);
     95 
     96 	g_test_add_func("/common/utils/get_uri_part/nowhitespace",
     97 			test_utils_get_uri_part_nowhitespace);
     98 	g_test_add_func("/common/utils/get_uri_part/whitespace",
     99 			test_utils_get_uri_part_whitespace);
    100 
    101 	g_test_add_data_func("/common/utils/get_uri_part/basic",
    102 			&td_get_uri_basic,
    103 			test_utils_get_uri_part);
    104 	g_test_add_data_func("/common/utils/get_uri_part/slash",
    105 			&td_get_uri_slash,
    106 			test_utils_get_uri_part);
    107 	g_test_add_data_func("/common/utils/get_uri_part/question",
    108 			&td_get_uri_question,
    109 			test_utils_get_uri_part);
    110 	g_test_add_data_func("/common/utils/get_uri_part/parenthesis",
    111 			&td_get_uri_parenthesis,
    112 			test_utils_get_uri_part);
    113 	g_test_add_data_func("/common/utils/get_uri_part/brace",
    114 			&td_get_uri_brace,
    115 			test_utils_get_uri_part);
    116 	g_test_add_data_func("/common/utils/get_uri_part/umlaut",
    117 			&td_get_uri_umlaut,
    118 			test_utils_get_uri_part);
    119 	g_test_add_data_func("/common/utils/get_uri_part/kanji",
    120 			&td_get_uri_kanji,
    121 			test_utils_get_uri_part);
    122 	g_test_add_data_func("/common/utils/get_uri_part/nonprintable",
    123 			&td_get_uri_nonprintable,
    124 			test_utils_get_uri_part);
    125 
    126 	return g_test_run();
    127 }