24#define cstl_STRING cstl_string
34#define cstl_STRING cstl_wstring
44#include "internal/check.h"
50 ck_assert_str_eq(cstl_string_str(&s),
"");
53 ck_assert_signal(SIGABRT, cstl_string_insert_ch(&s, 1, 20,
'a'));
56 cstl_string_insert_ch(&s, 0, 3,
'a');
57 ck_assert_str_eq(cstl_string_str(&s),
"aaa");
58 cstl_string_erase(&s, 0, 3);
60 cstl_string_set_str(&s,
"abc");
61 cstl_string_erase(&s, 1, 1);
62 ck_assert_str_eq(cstl_string_str(&s),
"ac");
64 cstl_string_set_str(&s,
"abc");
65 cstl_string_erase(&s, 1, 12);
66 ck_assert_str_eq(cstl_string_str(&s),
"a");
69 ck_assert_signal(SIGABRT, cstl_string_erase(&s, 1, 1));
71 cstl_string_clear(&s);
80 cstl_string_set_str(&s,
"abcdefg");
81 cstl_string_substr(&s, 3, 3, &sub);
82 ck_assert_str_eq(cstl_string_str(&sub),
"def");
84 cstl_string_set_str(&s,
"abcdefg");
85 cstl_string_substr(&s, 2, 12, &sub);
86 ck_assert_str_eq(cstl_string_str(&sub),
"cdefg");
88 cstl_string_clear(&sub);
89 cstl_string_clear(&s);
97 cstl_string_set_str(&s,
"abcdefghijk");
99 ck_assert(*cstl_string_at(&s, 0) ==
'a');
100 ck_assert(*cstl_string_at(&s, 1) ==
'b');
101 ck_assert(*cstl_string_at(&s, 2) ==
'c');
102 ck_assert(*cstl_string_at_const(&s, 3) ==
'd');
103 ck_assert(*cstl_string_at_const(&s, 4) ==
'e');
104 ck_assert(*cstl_string_at_const(&s, 5) ==
'f');
106 ck_assert_signal(SIGABRT, cstl_string_at(&s, 20));
108 ck_assert_int_eq(cstl_string_find_ch(&s,
'd', 0), 3);
109 ck_assert_int_eq(cstl_string_find_ch(&s,
'e', 0), 4);
110 ck_assert_int_eq(cstl_string_find_ch(&s, cstl_string_nul, 0), -1);
111 ck_assert_int_eq(cstl_string_find_ch(&s,
'd', 3), 3);
112 ck_assert_int_eq(cstl_string_find_ch(&s,
'e', 3), 4);
113 ck_assert_int_eq(cstl_string_find_ch(&s,
'z', 3), -1);
115 ck_assert_signal(SIGABRT, cstl_string_find_ch(&s,
'a', 20));
117 ck_assert_int_eq(cstl_string_find_str(&s,
"xyz", 0), -1);
118 ck_assert_int_eq(cstl_string_find_str(&s,
"abc", 0), 0);
119 ck_assert_int_eq(cstl_string_find_str(&s,
"ghikj", 0), -1);
120 ck_assert_int_eq(cstl_string_find_str(&s,
"efghij", 0), 4);
121 ck_assert_int_eq(cstl_string_find_str(&s,
"xyz", 4), -1);
122 ck_assert_int_eq(cstl_string_find_str(&s,
"abc", 4), -1);
123 ck_assert_int_eq(cstl_string_find_str(&s,
"ghikj", 4), -1);
124 ck_assert_int_eq(cstl_string_find_str(&s,
"efghij", 4), 4);
126 ck_assert_signal(SIGABRT, cstl_string_find_str(&s,
"abc", 20));
128 cstl_string_clear(&s);
137 cstl_string_set_str(&s1,
"hello");
138 cstl_string_set_str(&s2,
"world");
140 cstl_string_swap(&s1, &s2);
142 ck_assert_str_eq(cstl_string_str(&s1),
"world");
143 ck_assert_str_eq(cstl_string_str(&s2),
"hello");
145 cstl_string_clear(&s2);
146 cstl_string_clear(&s1);
150Suite * string_suite(
void)
152 Suite *
const s = suite_create(
"string");
156 tc = tcase_create(
"string");
157 tcase_add_test(tc, erase);
158 tcase_add_test(tc, substr);
159 tcase_add_test(tc, find);
160 tcase_add_test(tc, swap);
161 suite_add_tcase(s, tc);
#define DECLARE_CSTL_STRING(TYPE, NAME)
(Statically) declare and initialize a vector