Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
At least. ignore ignorable
[simgrid.git] / src / xbt_strbuff_unit.c
1 /*******************************/
2 /* GENERATED FILE, DO NOT EDIT */
3 /*******************************/
4
5 #include <stdio.h>
6 #include "xbt.h"
7 /*******************************/
8 /* GENERATED FILE, DO NOT EDIT */
9 /*******************************/
10
11 # 254 "xbt/xbt_strbuff.c" 
12 #include "xbt/strbuff.h"
13
14 /* buffstr have 512 chars by default. Adding 1000 chars like this will force a resize, allowing us to test that b->used and b->size are consistent */
15 #define force_resize \
16   "1.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
17   "2.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
18   "3.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
19   "4.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
20   "5.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
21   "6.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
22   "7.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
23   "8.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
24   "9.........1.........2.........3.........4.........5.........6.........7.........8.........9........." \
25   "0.........1.........2.........3.........4.........5.........6.........7.........8.........9........."
26
27 static void mytest(const char *input, const char *patterns, const char *expected) {
28   xbt_dynar_t dyn_patterns; /* splited string */
29   xbt_dict_t p; /* patterns */
30   unsigned int cpt;  char *str; /*foreach*/
31   xbt_strbuff_t sb; /* what we test */
32
33   p=xbt_dict_new();
34   dyn_patterns=xbt_str_split(patterns," ");
35   xbt_dynar_foreach(dyn_patterns,cpt,str) {
36     xbt_dynar_t keyvals = xbt_str_split(str,"=");
37     char *key = xbt_dynar_get_as(keyvals,0,char*);
38     char *val = xbt_dynar_get_as(keyvals,1,char*);
39     xbt_str_subst(key,'_',' ',0); // to put space in names without breaking the enclosing dynar_foreach
40     xbt_dict_set(p,key,xbt_strdup(val),free);
41     xbt_dynar_free(&keyvals);
42   }
43   xbt_dynar_free(&dyn_patterns);
44   sb = xbt_strbuff_new();
45   xbt_strbuff_append(sb,input);
46   xbt_strbuff_varsubst(sb, p);
47   xbt_dict_free(&p);
48   xbt_test_assert4(!strcmp(sb->data,expected),
49                    "Input (%s) with patterns (%s) leads to (%s) instead of (%s)",
50                    input,patterns,sb->data,expected);
51   xbt_strbuff_free(sb);
52 }
53
54 XBT_TEST_UNIT("xbt_strbuff_substitute",test_strbuff_substitute, "test the function xbt_strbuff_substitute") {
55   xbt_test_add0("Empty");mytest("", "", "");
56
57   xbt_test_add0("Value shorter, no braces, only variable");mytest("$tutu", "tutu=t", "t");
58   xbt_test_add0("Value shorter, braces, only variable");mytest("${tutu}", "tutu=t", "t");
59   xbt_test_add0("Value shorter, no braces, data after");mytest("$tutu toto", "tutu=t", "t toto");
60   xbt_test_add0("Value shorter, braces, data after");mytest("${tutu} toto", "tutu=t", "t toto");
61   xbt_test_add0("Value shorter, no braces, data before");mytest("toto $tutu", "tutu=t", "toto t");
62   xbt_test_add0("Value shorter, braces, data before");mytest("toto ${tutu}", "tutu=t", "toto t");
63   xbt_test_add0("Value shorter, no braces, data before and after");mytest("toto $tutu tata", "tutu=t", "toto t tata");
64   xbt_test_add0("Value shorter, braces, data before and after");mytest("toto ${tutu} tata", "tutu=t", "toto t tata");
65
66   xbt_test_add0("Value as long, no braces, only variable");mytest("$tutu", "tutu=12345", "12345");
67   xbt_test_add0("Value as long, braces, only variable");mytest("${tutu}", "tutu=1234567", "1234567");
68   xbt_test_add0("Value as long, no braces, data after");mytest("$tutu toto", "tutu=12345", "12345 toto");
69   xbt_test_add0("Value as long, braces, data after");mytest("${tutu} toto", "tutu=1234567", "1234567 toto");
70   xbt_test_add0("Value as long, no braces, data before");mytest("toto $tutu", "tutu=12345", "toto 12345");
71   xbt_test_add0("Value as long, braces, data before");mytest("toto ${tutu}", "tutu=1234567", "toto 1234567");
72   xbt_test_add0("Value as long, no braces, data before and after");mytest("toto $tutu tata", "tutu=12345", "toto 12345 tata");
73   xbt_test_add0("Value as long, braces, data before and after");mytest("toto ${tutu} tata", "tutu=1234567", "toto 1234567 tata");
74
75   xbt_test_add0("Value longer, no braces, only variable");mytest("$t", "t=tututu", "tututu");
76   xbt_test_add0("Value longer, braces, only variable");mytest("${t}", "t=tututu", "tututu");
77   xbt_test_add0("Value longer, no braces, data after");mytest("$t toto", "t=tututu", "tututu toto");
78   xbt_test_add0("Value longer, braces, data after");mytest("${t} toto", "t=tututu", "tututu toto");
79   xbt_test_add0("Value longer, no braces, data before");mytest("toto $t", "t=tututu", "toto tututu");
80   xbt_test_add0("Value longer, braces, data before");mytest("toto ${t}", "t=tututu", "toto tututu");
81   xbt_test_add0("Value longer, no braces, data before and after");mytest("toto $t tata", "t=tututu", "toto tututu tata");
82   xbt_test_add0("Value longer, braces, data before and after");mytest("toto ${t} tata", "t=tututu", "toto tututu tata");
83
84   xbt_test_add0("Value much longer, no braces, only variable");mytest("$t", "t=" force_resize, force_resize);
85   xbt_test_add0("Value much longer, no braces, data after");mytest("$t toto", "t=" force_resize, force_resize " toto");
86   xbt_test_add0("Value much longer, braces, data after");mytest("${t} toto", "t=" force_resize, force_resize " toto");
87   xbt_test_add0("Value much longer, no braces, data before");mytest("toto $t", "t=" force_resize, "toto " force_resize);
88   xbt_test_add0("Value much longer, braces, data before");mytest("toto ${t}", "t=" force_resize, "toto " force_resize);
89   xbt_test_add0("Value much longer, no braces, data before and after");mytest("toto $t tata", "t=" force_resize, "toto " force_resize " tata");
90   xbt_test_add0("Value much longer, braces, data before and after");mytest("toto ${t} tata", "t=" force_resize, "toto " force_resize " tata");
91
92   xbt_test_add0("Escaped $");mytest("\\$tutu", "tutu=t", "\\$tutu");
93   xbt_test_add0("Space in var name (with braces)");mytest("${tu ti}", "tu_ti=t", "t");
94
95   xbt_test_add0("Two variables");mytest("$toto $tutu","toto=1 tutu=2", "1 2");
96
97   // Commented: I'm too lazy to do a memmove in var name to remove the backslash after use.
98   // Users should use braces.
99   //  xbt_test_add0("Escaped space in var name", "$tu\\ ti", "tu_ti=t", "t");
100
101   xbt_test_add0("Default value");mytest("${t:-toto}", "", "toto");
102   xbt_test_add0("Useless default value (variable already defined)");mytest("${t:-toto}", "t=TRUC", "TRUC");
103
104 }
105
106 /*******************************/
107 /* GENERATED FILE, DO NOT EDIT */
108 /*******************************/
109