91 CX_TEST_ASSERT(dup.length == str.length); |
91 CX_TEST_ASSERT(dup.length == str.length); |
92 CX_TEST_ASSERT(0 == strcmp(dup.ptr, "te")); |
92 CX_TEST_ASSERT(0 == strcmp(dup.ptr, "te")); |
93 ASSERT_ZERO_TERMINATED(dup); |
93 ASSERT_ZERO_TERMINATED(dup); |
94 } |
94 } |
95 cx_strfree(&dup); |
95 cx_strfree(&dup); |
|
96 } |
|
97 |
|
98 CX_TEST(test_strcpy) { |
|
99 CxTestingAllocator talloc; |
|
100 cx_testing_allocator_init(&talloc); |
|
101 const CxAllocator *alloc = &talloc.base; |
|
102 cxstring str = CX_STR("test string"); |
|
103 str.length = 8; // test with a non-zero-terminated source |
|
104 cxmutstr dup; |
|
105 CX_TEST_DO { |
|
106 // copy into a smaller string |
|
107 dup = cx_strdup_a(alloc, CX_STR("hello")); |
|
108 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str)); |
|
109 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str"))); |
|
110 ASSERT_ZERO_TERMINATED(dup); |
|
111 cx_strfree_a(alloc, &dup); |
|
112 |
|
113 // copy into a larger string |
|
114 dup = cx_strdup_a(alloc, CX_STR("hello, world!")); |
|
115 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str)); |
|
116 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str"))); |
|
117 ASSERT_ZERO_TERMINATED(dup); |
|
118 cx_strfree_a(alloc, &dup); |
|
119 |
|
120 // copy into an equal-length string |
|
121 dup = cx_strdup_a(alloc, CX_STR("testing!")); |
|
122 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str)); |
|
123 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str"))); |
|
124 ASSERT_ZERO_TERMINATED(dup); |
|
125 cx_strfree_a(alloc, &dup); |
|
126 |
|
127 // copy into a NULL-string |
|
128 dup.ptr = NULL; |
|
129 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str)); |
|
130 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str"))); |
|
131 ASSERT_ZERO_TERMINATED(dup); |
|
132 cx_strfree_a(alloc, &dup); |
|
133 } |
|
134 cx_testing_allocator_destroy(&talloc); |
96 } |
135 } |
97 |
136 |
98 CX_TEST(test_strlen) { |
137 CX_TEST(test_strlen) { |
99 cxstring s1 = CX_STR("1234"); |
138 cxstring s1 = CX_STR("1234"); |
100 cxstring s2 = CX_STR(".:.:."); |
139 cxstring s2 = CX_STR(".:.:."); |
1261 |
1300 |
1262 cx_test_register(suite, test_string_construct); |
1301 cx_test_register(suite, test_string_construct); |
1263 cx_test_register(suite, test_strfree); |
1302 cx_test_register(suite, test_strfree); |
1264 cx_test_register(suite, test_strdup); |
1303 cx_test_register(suite, test_strdup); |
1265 cx_test_register(suite, test_strdup_shortened); |
1304 cx_test_register(suite, test_strdup_shortened); |
|
1305 cx_test_register(suite, test_strcpy); |
1266 cx_test_register(suite, test_strlen); |
1306 cx_test_register(suite, test_strlen); |
1267 cx_test_register(suite, test_strsubs); |
1307 cx_test_register(suite, test_strsubs); |
1268 cx_test_register(suite, test_strchr); |
1308 cx_test_register(suite, test_strchr); |
1269 cx_test_register(suite, test_strrchr); |
1309 cx_test_register(suite, test_strrchr); |
1270 cx_test_register(suite, test_strstr); |
1310 cx_test_register(suite, test_strstr); |