tests/test_string.c

Sun, 23 Nov 2025 13:15:19 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:15:19 +0100
changeset 1508
dfc0ddd9571e
parent 1500
d20037235c9c
permissions
-rw-r--r--

optimize sorted insertion by using the infimum instead of the supremum

The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.

777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved.
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/test.h"
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 #include "util_allocator.h"
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 #include "cx/string.h"
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
33 #include "cx/compare.h"
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
35 #include <limits.h>
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
36 #include <errno.h>
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
37
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38 #define ASSERT_ZERO_TERMINATED(str) CX_TEST_ASSERTM((str).ptr[(str).length] == '\0', \
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 #str " is not zero terminated")
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 CX_TEST(test_string_construct) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 cxstring s1 = CX_STR("1234");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43 cxstring s2 = cx_strn("abcd", 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44 cxmutstr s3 = cx_mutstr((char *) "1234");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45 cxmutstr s4 = cx_mutstrn((char *) "abcd", 2);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
46 cxstring snull = cx_str(NULL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
47 cxmutstr mnull = cx_mutstr(NULL);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 CX_TEST_ASSERT(s1.length == 4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 CX_TEST_ASSERT(strncmp(s1.ptr, "1234", 4) == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 CX_TEST_ASSERT(s2.length == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 CX_TEST_ASSERT(strncmp(s2.ptr, "ab", 2) == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53 CX_TEST_ASSERT(s3.length == 4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54 CX_TEST_ASSERT(strncmp(s3.ptr, "1234", 4) == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 CX_TEST_ASSERT(s4.length == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 CX_TEST_ASSERT(strncmp(s4.ptr, "ab", 2) == 0);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
57 CX_TEST_ASSERT(0 == snull.length);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
58 CX_TEST_ASSERT(NULL == snull.ptr);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
59 CX_TEST_ASSERT(0 == mnull.length);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
60 CX_TEST_ASSERT(NULL == mnull.ptr);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
61 CX_TEST_ASSERT(0 == cx_strcmp(snull, ""));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
62 CX_TEST_ASSERT(0 == cx_strcmp(mnull, ""));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
63 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
66 CX_TEST(test_string_cast) {
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
67 char *c1 = (char*) "123";
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
68 const char *c2 = "abcde";
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
69 unsigned char *c3 = (unsigned char*) "4711";
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
70 unsigned const char *c4 = (unsigned const char*) "xyz0815";
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
71 cxstring s1 = cx_strcast(c1);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
72 cxstring s2 = cx_strcast(c2);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
73 cxstring s3 = cx_strcast(c3);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
74 cxstring s4 = cx_strcast(c4);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
75 CX_TEST_DO {
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
76 CX_TEST_ASSERT(s1.length == 3);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
77 CX_TEST_ASSERT(strncmp(s1.ptr, "123", 3) == 0);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
78 CX_TEST_ASSERT(s2.length == 5);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
79 CX_TEST_ASSERT(strncmp(s2.ptr, "abcde", 5) == 0);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
80 CX_TEST_ASSERT(s3.length == 4);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
81 CX_TEST_ASSERT(strncmp(s3.ptr, "4711", 4) == 0);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
82 CX_TEST_ASSERT(s4.length == 7);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
83 CX_TEST_ASSERT(strncmp(s4.ptr, "xyz0815", 7) == 0);
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
84 }
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
85 }
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
86
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
87 CX_TEST(test_strfree) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
88 CxTestingAllocator talloc;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
89 cx_testing_allocator_init(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
90 CxAllocator *alloc = &talloc.base;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
91 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
92 char *test = cxMalloc(alloc, 16);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
93 cxmutstr str = cx_mutstrn(test, 16);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
94 CX_TEST_ASSERT(str.ptr == test);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
95 CX_TEST_ASSERT(str.length == 16);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
96 cx_strfree_a(alloc, &str);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
97 CX_TEST_ASSERT(str.ptr == NULL);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
98 CX_TEST_ASSERT(str.length == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
99 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
100 // check that this does not explode
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
101 cx_strfree(NULL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
102 cx_strfree_a(alloc, NULL);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
103 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
104 cx_testing_allocator_destroy(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
105 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
106
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
107 CX_TEST(test_strdup) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
108 cxstring str = CX_STR("test");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
109 cxmutstr dup = cx_strdup(str);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
110 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
111 CX_TEST_ASSERT(dup.length == str.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
112 CX_TEST_ASSERT(0 == strcmp(dup.ptr, str.ptr));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
113 ASSERT_ZERO_TERMINATED(dup);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
114 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
115 cx_strfree(&dup);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
116 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
117
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 CX_TEST(test_strdup_shortened) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
119 cxstring str = CX_STR("test");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 str.length = 2;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121 cxmutstr dup = cx_strdup(str);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123 CX_TEST_ASSERT(dup.length == str.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124 CX_TEST_ASSERT(0 == strcmp(dup.ptr, "te"));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
125 ASSERT_ZERO_TERMINATED(dup);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
126 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
127 cx_strfree(&dup);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
128 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
129
1304
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
130 CX_TEST(test_strcpy) {
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
131 CxTestingAllocator talloc;
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
132 cx_testing_allocator_init(&talloc);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
133 const CxAllocator *alloc = &talloc.base;
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
134 cxstring str = CX_STR("test string");
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
135 str.length = 8; // test with a non-zero-terminated source
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
136 cxmutstr dup;
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
137 CX_TEST_DO {
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
138 // copy into a smaller string
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
139 dup = cx_strdup_a(alloc, CX_STR("hello"));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
140 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
141 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str")));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
142 ASSERT_ZERO_TERMINATED(dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
143 cx_strfree_a(alloc, &dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
144
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
145 // copy into a larger string
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
146 dup = cx_strdup_a(alloc, CX_STR("hello, world!"));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
147 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
148 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str")));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
149 ASSERT_ZERO_TERMINATED(dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
150 cx_strfree_a(alloc, &dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
151
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
152 // copy into an equal-length string
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
153 dup = cx_strdup_a(alloc, CX_STR("testing!"));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
154 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
155 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str")));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
156 ASSERT_ZERO_TERMINATED(dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
157 cx_strfree_a(alloc, &dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
158
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
159 // copy into a NULL-string
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
160 dup.ptr = NULL;
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
161 CX_TEST_ASSERT(0 == cx_strcpy_a(alloc, &dup, str));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
162 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(dup), CX_STR("test str")));
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
163 ASSERT_ZERO_TERMINATED(dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
164 cx_strfree_a(alloc, &dup);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
165 }
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
166 cx_testing_allocator_destroy(&talloc);
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
167 }
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
168
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
169 CX_TEST(test_strlen) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
170 cxstring s1 = CX_STR("1234");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
171 cxstring s2 = CX_STR(".:.:.");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
172 cxstring s3 = CX_STR("X");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
173 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
174 size_t len0 = cx_strlen(0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175 size_t len1 = cx_strlen(1, s1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 size_t len2 = cx_strlen(2, s1, s2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
177 size_t len3 = cx_strlen(3, s1, s2, s3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 CX_TEST_ASSERT(len0 == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
180 CX_TEST_ASSERT(len1 == 4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
181 CX_TEST_ASSERT(len2 == 9);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
182 CX_TEST_ASSERT(len3 == 10);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
183 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
184 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
185
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
186 CX_TEST(test_strsubs) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 cxstring str = CX_STR("A test string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
189 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 cxstring sub = cx_strsubs(str, 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 CX_TEST_ASSERT(0 == cx_strcmp(sub, str));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 sub = cx_strsubs(str, 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
194 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("test string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
195
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
196 sub = cx_strsubs(str, 7);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
197 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
198
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
199 sub = cx_strsubs(str, 15);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
200 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
201
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
202 sub = cx_strsubsl(str, 2, 4);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
203 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("test")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
204
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 sub = cx_strsubsl(str, 7, 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
206 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("str")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208 sub = cx_strsubsl(str, 7, 20);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
209 CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
210
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
211 // just for coverage, call the _m variant
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
212 cxmutstr m = cx_strsubs_m(cx_mutstrn(NULL, 0), 0);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
213 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(m), cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
214 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
215 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
216
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
217 CX_TEST(test_strchr) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
218 cxstring str = CX_STR("I will find you - and I will kill you");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
219
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
220 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
221 cxstring notfound = cx_strchr(str, 'x');
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
222 CX_TEST_ASSERT(notfound.length == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
223
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
224 cxstring result = cx_strchr(str, 'w');
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
225 CX_TEST_ASSERT(result.length == 35);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
226 CX_TEST_ASSERT(0 == strcmp(result.ptr, "will find you - and I will kill you"));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
227
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
228 // just for coverage, call the _m variant
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
229 cxmutstr m = cx_strchr_m(cx_mutstrn(NULL, 0), 'a');
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
230 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(m), cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
231 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
232 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
233
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
234 CX_TEST(test_strrchr) {
1412
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
235 cxstring str = CX_STR("X will find you - and I will kill you");
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
236
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
237 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
238 cxstring notfound = cx_strrchr(str, 'x');
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
239 CX_TEST_ASSERT(notfound.length == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
240
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
241 cxstring result = cx_strrchr(str, 'w');
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
242 CX_TEST_ASSERT(result.length == 13);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
243 CX_TEST_ASSERT(0 == strcmp(result.ptr, "will kill you"));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
244
1412
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
245 result = cx_strrchr(str, 'u');
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
246 CX_TEST_ASSERT(result.length == 1);
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
247 CX_TEST_ASSERT(0 == strcmp(result.ptr, "u"));
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
248
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
249 result = cx_strrchr(str, 'X');
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
250 CX_TEST_ASSERT(0 == cx_strcmp(result, str));
a6f357c18ac6 use memrchr() to implement cx_strrchr() when it is available
Mike Becker <universe@uap-core.de>
parents: 1410
diff changeset
251
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
252 // just for coverage, call the _m variant
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
253 cxmutstr m = cx_strrchr_m(cx_mutstrn(NULL, 0), 'a');
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
254 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(m), cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
255 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
256 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
257
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
258 CX_TEST(test_strstr) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
259 cxstring str = CX_STR("find the match in this string");
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
260
926
8fdd8d78c14b fix several survivors of east-const and some missing consts
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
261 const size_t longstrpatternlen = 64 + cx_strstr_sbo_size;
8fdd8d78c14b fix several survivors of east-const and some missing consts
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
262 const size_t longstrlen = 320 + longstrpatternlen + 14;
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
263
809
b7e2e1d7ed22 fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents: 806
diff changeset
264 // it is more expensive to use calloc here, because we will overwrite
b7e2e1d7ed22 fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents: 806
diff changeset
265 // the memory anyway in the test preparation - but it is more reliable
b7e2e1d7ed22 fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents: 806
diff changeset
266 // in case we are doing something horribly wrong
b7e2e1d7ed22 fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents: 806
diff changeset
267 char *longstrc = calloc(longstrlen+1, 1);
b7e2e1d7ed22 fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents: 806
diff changeset
268 char *longstrpatternc = calloc(longstrpatternlen+1, 1);
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
269
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
270 memcpy(longstrc,
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
271 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl"
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
272 "mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
273 "yzabcdeababababnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij"
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
274 "klmnopqrstuvwxyzaababababababababrstuvwxyzabcdefghijklmnopqrstuv"
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
275 "abababababababababababababababababababababababababababababababab",
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
276 320
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
277 );
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
278 memcpy(longstrpatternc,
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
279 "abababababababababababababababababababababababababababababababab",
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
280 64
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
281 );
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
282 char x = 'a', y='b', z;
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
283 for (size_t i = 0; i < cx_strstr_sbo_size ; i++) {
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
284 longstrpatternc[64+i] = x;
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
285 longstrc[320+i] = x;
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
286 z=x; x=y; y=z;
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
287 }
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
288 longstrpatternc[longstrpatternlen] = '\0';
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
289 memcpy(longstrc+longstrlen-14, "wxyz1234567890", 15);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
290
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
291 cxmutstr longstr = cx_mutstrn(longstrc, longstrlen);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
292 cxstring longstrpattern = cx_strn(longstrpatternc, longstrpatternlen);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
293 cxmutstr longstrresult = cx_mutstrn(longstrc+256, longstrlen-256);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
294
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
295 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
296 cxstring notfound = cx_strstr(str, cx_str("no match"));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
297 CX_TEST_ASSERT(notfound.length == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
298
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
299 cxstring result = cx_strstr(str, cx_str("match"));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
300 CX_TEST_ASSERT(result.length == 20);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
301 CX_TEST_ASSERT(0 == strcmp(result.ptr, "match in this string"));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
302
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
303 result = cx_strstr(str, cx_str(""));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
304 CX_TEST_ASSERT(result.length == str.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
305 CX_TEST_ASSERT(0 == strcmp(result.ptr, str.ptr));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
306
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
307 cxmutstr resultm = cx_strstr_m(longstr, longstrpattern);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
308 CX_TEST_ASSERT(resultm.length == longstrresult.length);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
309 CX_TEST_ASSERT(0 == strcmp(resultm.ptr, longstrresult.ptr));
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
310 }
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
311
806
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
312 free(longstrc);
e06249e09f99 add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
313 free(longstrpatternc);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
314 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
315
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
316 CX_TEST(test_strcmp) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
317 cxstring str = CX_STR("compare this");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
318 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
319 CX_TEST_ASSERT(0 == cx_strcmp(cx_str(""), cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
320 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
321 CX_TEST_ASSERT(0 == cx_strcmp(str, cx_str("compare this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
322 CX_TEST_ASSERT(0 != cx_strcmp(str, cx_str("Compare This")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
323 CX_TEST_ASSERT(0 > cx_strcmp(str, cx_str("compare tool")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
324 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("compare shit")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
325 CX_TEST_ASSERT(0 > cx_strcmp(str, cx_str("compare this not")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
326 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("compare")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
327 CX_TEST_ASSERT(0 > cx_strcmp(str, cx_str("lex")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
328 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("another lex test")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
329 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("Lex")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
330 CX_TEST_ASSERT(0 < cx_strcmp(str, cx_str("Another lex test")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
331
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
332 cxstring str2 = CX_STR("Compare This");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
333 CX_TEST_ASSERT(0 != cx_strcmp_p(&str, &str2));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
334 str2 = CX_STR("compare this");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
335 CX_TEST_ASSERT(0 == cx_strcmp_p(&str, &str2));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
336 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
337 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
338
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
339 CX_TEST(test_strcasecmp) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
340 cxstring str = CX_STR("compare this");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
341 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
342 CX_TEST_ASSERT(0 == cx_strcasecmp(cx_str(""), cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
343 CX_TEST_ASSERT(0 < cx_strcasecmp(str, cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
344 CX_TEST_ASSERT(0 == cx_strcasecmp(str, cx_str("compare this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
345 CX_TEST_ASSERT(0 == cx_strcasecmp(str, cx_str("Compare This")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
346 CX_TEST_ASSERT(0 > cx_strcasecmp(str, cx_str("compare tool")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
347 CX_TEST_ASSERT(0 < cx_strcasecmp(str, cx_str("compare shit")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
348 CX_TEST_ASSERT(0 > cx_strcasecmp(str, cx_str("compare this not")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
349 CX_TEST_ASSERT(0 < cx_strcasecmp(str, cx_str("compare")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
350 CX_TEST_ASSERT(0 > cx_strcasecmp(str, cx_str("lex")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
351 CX_TEST_ASSERT(0 < cx_strcasecmp(str, cx_str("another lex test")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
352 CX_TEST_ASSERT(0 > cx_strcasecmp(str, cx_str("Lex")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
353 CX_TEST_ASSERT(0 < cx_strcasecmp(str, cx_str("Another lex test")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
354
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
355 cxstring str2 = CX_STR("Compare This");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
356 CX_TEST_ASSERT(0 == cx_strcasecmp_p(&str, &str2));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
357 str2 = CX_STR("Compare Tool");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
358 CX_TEST_ASSERT(0 > cx_strcasecmp_p(&str, &str2));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
359 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
360 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
361
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
362 CX_TEST(test_strcat) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
363 cxstring s1 = CX_STR("12");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
364 cxstring s2 = CX_STR("34");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
365 cxstring s3 = CX_STR("56");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
366 cxstring sn = {NULL, 0};
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
367
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
368 CxTestingAllocator talloc;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
369 cx_testing_allocator_init(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
370 CxAllocator *alloc = &talloc.base;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
371
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
372 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
373 cxmutstr t1 = cx_strcat_a(alloc, 2, s1, s2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
374 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t1), cx_str("1234")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
375 ASSERT_ZERO_TERMINATED(t1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
376 cx_strfree_a(alloc, &t1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
377
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
378 cxmutstr t2 = cx_strcat_a(alloc, 3, s1, s2, s3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
379 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t2), cx_str("123456")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
380 ASSERT_ZERO_TERMINATED(t2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
381 cx_strfree_a(alloc, &t2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
382
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
383 cxmutstr t3 = cx_strcat_a(alloc, 6, s1, sn, s2, sn, s3, sn);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
384 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t3), cx_str("123456")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
385 ASSERT_ZERO_TERMINATED(t3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
386 cx_strfree_a(alloc, &t3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
387
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
388 cxmutstr t4 = cx_strcat_a(alloc, 2, sn, sn);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
389 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t4), cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
390 ASSERT_ZERO_TERMINATED(t4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
391 cx_strfree_a(alloc, &t4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
392
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
393 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
394
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
395 // use the macro
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
396 cxmutstr t5 = cx_strcat(3, s3, s1, s2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
397 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t5), cx_str("561234")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
398 ASSERT_ZERO_TERMINATED(t5);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
399 cx_strfree(&t5);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
400
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
401 // use an initial string
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
402 cxmutstr t6 = cx_strdup(cx_str("Hello"));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
403 t6 = cx_strcat_m(t6, 2, cx_str(", "), cx_str("World!"));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
404 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(t6), cx_str("Hello, World!")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
405 ASSERT_ZERO_TERMINATED(t6);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
406 cx_strfree(&t6);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
407
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
408 // test overflow with fake strings
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
409 char *fakestr = NULL;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
410 cxstring a = cx_strn(fakestr, SIZE_MAX / 3 - 10);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
411 cxstring b = cx_strn(fakestr, SIZE_MAX / 3 - 5);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
412 cxstring c = cx_strn(fakestr, SIZE_MAX / 3 + 20);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
413 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
414 cxmutstr z = cx_strcat(3, a, b, c);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
415 CX_TEST_ASSERT(errno == EOVERFLOW);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
416 CX_TEST_ASSERT(z.ptr == NULL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
417 CX_TEST_ASSERT(z.length == 0);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
418 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
419 cx_testing_allocator_destroy(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
420 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
421
1003
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
422 CX_TEST(test_strcat_more_than_eight) {
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
423 cxstring s1 = CX_STR("12");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
424 cxstring s2 = CX_STR("34");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
425 cxstring s3 = CX_STR("56");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
426 cxstring s4 = CX_STR("78");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
427 cxstring s5 = CX_STR("9a");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
428 cxstring s6 = CX_STR("bc");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
429 cxstring s7 = CX_STR("de");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
430 cxstring s8 = CX_STR("f0");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
431 cxstring s9 = CX_STR("xy");
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
432
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
433 CX_TEST_DO {
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
434 cxmutstr r = cx_strcat(9, s1, s2, s3, s4, s5, s6, s7, s8, s9);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
435 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(r), cx_str("123456789abcdef0xy")));
1003
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
436 ASSERT_ZERO_TERMINATED(r);
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
437 cx_strfree(&r);
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
438 }
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
439 }
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
440
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
441 CX_TEST(test_strsplit) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
442 cxstring test = CX_STR("this,is,a,csv,string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
443 size_t capa = 8;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
444 cxstring list[8];
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
445 size_t n;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
446 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
447 // special case: empty string
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
448 n = cx_strsplit(test, cx_str(""), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
449 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
450 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
451
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
452 // no delimiter occurrence
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
453 n = cx_strsplit(test, cx_str("z"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
454 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
455 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
456
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
457 // partially matching delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
458 n = cx_strsplit(test, cx_str("is,not"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
459 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
460 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
461
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
462 // matching single-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
463 n = cx_strsplit(test, cx_str(","), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
464 CX_TEST_ASSERT(n == 5);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
465 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
466 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("is")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
467 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
468 CX_TEST_ASSERT(0 == cx_strcmp(list[3], cx_str("csv")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
469 CX_TEST_ASSERT(0 == cx_strcmp(list[4], cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
470
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
471 // matching multi-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
472 n = cx_strsplit(test, cx_str("is"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
473 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
474 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
475 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
476 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str(",a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
477
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
478 // bounded list using single-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
479 n = cx_strsplit(test, cx_str(","), 3, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
480 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
481 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
482 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("is")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
483 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
484
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
485 // bounded list using multi-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
486 n = cx_strsplit(test, cx_str("is"), 2, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
487 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
488 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
489 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",is,a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
490
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
491 // start with delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
492 n = cx_strsplit(test, cx_str("this"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
493 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
494 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
495 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",is,a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
496
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
497 // end with delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
498 n = cx_strsplit(test, cx_str("string"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
499 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
500 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this,is,a,csv,")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
501 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
502
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
503
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
504 // end with delimiter exceed bound
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
505 n = cx_strsplit(cx_str("a,b,c,"), cx_str(","), 3, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
506 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
507 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("a")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
508 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("b")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
509 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("c,")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
510
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
511 // exact match
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
512 n = cx_strsplit(test, cx_str("this,is,a,csv,string"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
513 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
514 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
515 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
516
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
517 // string to be split is only substring
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
518 n = cx_strsplit(test, cx_str("this,is,a,csv,string,with,extension"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
519 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
520 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
521
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
522 // subsequent encounter of delimiter (the string between is empty)
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
523 n = cx_strsplit(test, cx_str("is,"), capa, list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
524 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
525 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
526 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
527 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
528
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
529 // call the _m variant just for coverage
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
530 cxmutstr mtest = cx_strdup(test);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
531 cxmutstr mlist[4];
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
532 n = cx_strsplit_m(mtest, cx_str("is,"), 4, mlist);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
533 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
534 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[0]), cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
535 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[1]), cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
536 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
537 cx_strfree(&mtest);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
538 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
539 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
540
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
541 CX_TEST(test_strsplit_a) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
542 CxTestingAllocator talloc;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
543 cx_testing_allocator_init(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
544 CxAllocator *alloc = &talloc.base;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
545
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
546 cxstring test = CX_STR("this,is,a,csv,string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
547 size_t capa = 8;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
548 cxstring *list;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
549 size_t n;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
550 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
551 // special case: empty string
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
552 n = cx_strsplit_a(alloc, test, cx_str(""), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
553 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
554 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
555 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
556
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
557 // no delimiter occurrence
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
558 n = cx_strsplit_a(alloc, test, cx_str("z"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
559 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
560 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
561 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
562
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
563 // partially matching delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
564 n = cx_strsplit_a(alloc, test, cx_str("is,not"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
565 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
566 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
567 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
568
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
569 // matching single-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
570 n = cx_strsplit_a(alloc, test, cx_str(","), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
571 CX_TEST_ASSERT(n == 5);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
572 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
573 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("is")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
574 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
575 CX_TEST_ASSERT(0 == cx_strcmp(list[3], cx_str("csv")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
576 CX_TEST_ASSERT(0 == cx_strcmp(list[4], cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
577 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
578
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
579 // matching multi-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
580 n = cx_strsplit_a(alloc, test, cx_str("is"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
581 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
582 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
583 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
584 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str(",a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
585 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
586
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
587 // bounded list using single-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
588 n = cx_strsplit_a(alloc, test, cx_str(","), 3, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
589 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
590 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
591 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("is")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
592 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
593 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
594
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
595 // bounded list using multi-char delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
596 n = cx_strsplit_a(alloc, test, cx_str("is"), 2, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
597 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
598 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
599 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",is,a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
600 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
601
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
602 // start with delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
603 n = cx_strsplit_a(alloc, test, cx_str("this"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
604 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
605 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
606 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str(",is,a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
607 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
608
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
609 // end with delimiter
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
610 n = cx_strsplit_a(alloc, test, cx_str("string"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
611 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
612 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("this,is,a,csv,")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
613 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
614 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
615
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
616 // end with delimiter exceed bound
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
617 n = cx_strsplit_a(alloc, cx_str("a,b,c,"), cx_str(","), 3, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
618 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
619 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("a")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
620 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("b")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
621 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("c,")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
622 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
623
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
624 // exact match
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
625 n = cx_strsplit_a(alloc, test, cx_str("this,is,a,csv,string"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
626 CX_TEST_ASSERT(n == 2);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
627 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
628 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
629 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
630
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
631 // string to be split is only substring
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
632 n = cx_strsplit_a(alloc, test, cx_str("this,is,a,csv,string,with,extension"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
633 CX_TEST_ASSERT(n == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
634 CX_TEST_ASSERT(0 == cx_strcmp(list[0], test));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
635 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
636
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
637 // subsequent encounter of delimiter (the string between is empty)
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
638 n = cx_strsplit_a(alloc, test, cx_str("is,"), capa, &list);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
639 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
640 CX_TEST_ASSERT(0 == cx_strcmp(list[0], cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
641 CX_TEST_ASSERT(0 == cx_strcmp(list[1], cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
642 CX_TEST_ASSERT(0 == cx_strcmp(list[2], cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
643 cxFree(alloc, list);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
644
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
645 // call the _m variant just for coverage
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
646 cxmutstr mtest = cx_strdup(test);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
647 cxmutstr *mlist;
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
648 n = cx_strsplit_ma(alloc, mtest, cx_str("is,"), 4, &mlist);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
649 CX_TEST_ASSERT(n == 3);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
650 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[0]), cx_str("th")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
651 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[1]), cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
652 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
653 cxFree(alloc, mlist);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
654 cx_strfree(&mtest);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
655
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
656 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
657 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
658 cx_testing_allocator_destroy(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
659 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
660
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
661 CX_TEST(test_strtrim) {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
662 cxstring t1 = cx_strtrim(cx_str(" ein test \t "));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
663 cxstring t2 = cx_strtrim(cx_str("abc"));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
664 cxstring t3 = cx_strtrim(cx_str(" 123"));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
665 cxstring t4 = cx_strtrim(cx_str("xyz "));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
666 cxstring t5 = cx_strtrim(cx_str(" "));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
667 cxstring empty = cx_strtrim(cx_str(""));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
668
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
669 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
670 CX_TEST_ASSERT(0 == cx_strcmp(t1, cx_str("ein test")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
671 CX_TEST_ASSERT(0 == cx_strcmp(t2, cx_str("abc")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
672 CX_TEST_ASSERT(0 == cx_strcmp(t3, cx_str("123")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
673 CX_TEST_ASSERT(0 == cx_strcmp(t4, cx_str("xyz")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
674 CX_TEST_ASSERT(0 == cx_strcmp(t5, cx_str("")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
675 CX_TEST_ASSERT(0 == cx_strcmp(empty, cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
676
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
677 // call the _m variant just for coverage
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
678 cxmutstr m1 = cx_strtrim_m(cx_mutstr((char *) " ein test \t "));
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
679 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(m1), cx_str("ein test")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
680 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
681 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
682
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
683 CX_TEST(test_strprefix) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
684 cxstring str = CX_STR("test my prefix and my suffix");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
685 cxstring empty = CX_STR("");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
686 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
687 CX_TEST_ASSERT(!cx_strprefix(empty, cx_str("pref")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
688 CX_TEST_ASSERT(cx_strprefix(str, empty));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
689 CX_TEST_ASSERT(cx_strprefix(empty, empty));
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
690 CX_TEST_ASSERT(cx_strprefix(str, cx_str("test ")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
691 CX_TEST_ASSERT(!cx_strprefix(str, cx_str("8-) fsck ")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
692 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
693 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
694
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
695 CX_TEST(test_strsuffix) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
696 cxstring str = CX_STR("test my prefix and my suffix");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
697 cxstring empty = CX_STR("");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
698 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
699 CX_TEST_ASSERT(!cx_strsuffix(empty, cx_str("suf")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
700 CX_TEST_ASSERT(cx_strsuffix(str, empty));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
701 CX_TEST_ASSERT(cx_strsuffix(empty, empty));
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
702 CX_TEST_ASSERT(cx_strsuffix(str, cx_str("fix")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
703 CX_TEST_ASSERT(!cx_strsuffix(str, cx_str("fox")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
704 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
705 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
706
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
707 CX_TEST(test_strcaseprefix) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
708 cxstring str = CX_STR("test my prefix and my suffix");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
709 cxstring empty = CX_STR("");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
710 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
711 CX_TEST_ASSERT(!cx_strcaseprefix(empty, cx_str("pREf")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
712 CX_TEST_ASSERT(cx_strcaseprefix(str, empty));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
713 CX_TEST_ASSERT(cx_strcaseprefix(empty, empty));
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
714 CX_TEST_ASSERT(cx_strcaseprefix(str, cx_str("TEST ")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
715 CX_TEST_ASSERT(!cx_strcaseprefix(str, cx_str("8-) fsck ")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
716 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
717 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
718
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
719 CX_TEST(test_strcasesuffix) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
720 cxstring str = CX_STR("test my prefix and my suffix");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
721 cxstring empty = CX_STR("");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
722 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
723 CX_TEST_ASSERT(!cx_strcasesuffix(empty, cx_str("sUf")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
724 CX_TEST_ASSERT(cx_strcasesuffix(str, empty));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
725 CX_TEST_ASSERT(cx_strcasesuffix(empty, empty));
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
726 CX_TEST_ASSERT(cx_strcasesuffix(str, cx_str("FIX")));
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
727 CX_TEST_ASSERT(!cx_strcasesuffix(str, cx_str("fox")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
728 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
729 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
730
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
731 CX_TEST(test_strreplace) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
732 CxTestingAllocator talloc;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
733 cx_testing_allocator_init(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
734 CxAllocator *alloc = &talloc.base;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
735
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
736 cxstring str = CX_STR("test ababab string aba");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
737 cxstring longstr = CX_STR(
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
738 "xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
739 cxstring notrail = CX_STR("test abab");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
740 cxstring empty = CX_STR("");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
741 cxstring astr = CX_STR("aaaaaaaaaa");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
742 cxstring csstr = CX_STR("test AB ab TEST xyz");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
743
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
744 cxmutstr repl = cx_strreplace(str, cx_str("abab"), cx_str("muchlonger"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
745 const char *expected = "test muchlongerab string aba";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
746
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
747 cxmutstr repln = cx_strreplacen(str, cx_str("ab"), cx_str("c"), 2);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
748 const char *expectedn = "test ccab string aba";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
749
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
750 cxmutstr longrepl = cx_strreplace(longstr, cx_str("a"), cx_str("z"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
751 const char *longexpect = "xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
752
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
753 cxmutstr replnotrail = cx_strreplace(notrail, cx_str("ab"), cx_str("z"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
754 const char *notrailexpect = "test zz";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
755
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
756 cxmutstr repleq = cx_strreplace(str, str, cx_str("hello"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
757 const char *eqexpect = "hello";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
758
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
759 cxmutstr replempty1 = cx_strreplace(empty, cx_str("ab"), cx_str("c")); // expect: empty
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
760 cxmutstr replempty2 = cx_strreplace(str, cx_str("abab"), empty);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
761 const char *emptyexpect2 = "test ab string aba";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
762
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
763 cxmutstr replpre = cx_strreplace(str, cx_str("test "), cx_str("TEST "));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
764 const char *preexpected = "TEST ababab string aba";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
765
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
766 cxmutstr replan1 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 1);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
767 const char *an1expected = "xaaaaaaaaa";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
768
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
769 cxmutstr replan4 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 4);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
770 const char *an4expected = "xxxxaaaaaa";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
771
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
772 cxmutstr replan9 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 9);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
773 const char *an9expected = "xxxxxxxxxa";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
774
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
775 cxmutstr replan10 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 10);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
776 const char *an10expected = "xxxxxxxxxx";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
777
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
778 cxmutstr norepl = cx_strreplace(cx_strn("hello world", 11), cx_str("worlds"), cx_str("test"));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
779 const char *noreplexpect = "hello world";
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
780
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
781 CX_TEST_DO {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
782 cxmutstr repl1_a = cx_strreplace_a(alloc, csstr, cx_str("AB"), cx_str("*"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
783 const char *expeced1_a = "test * ab TEST xyz";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
784
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
785 cxmutstr repl2_a = cx_strreplace_a(alloc, csstr, cx_str("test"), cx_str("TEST"));
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 809
diff changeset
786 const char *expected2_a = "TEST AB ab TEST xyz";
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
787
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
788 CX_TEST_ASSERT(repl.ptr != str.ptr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
789 ASSERT_ZERO_TERMINATED(repl);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
790 CX_TEST_ASSERT(0 == strcmp(repl.ptr, expected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
791 ASSERT_ZERO_TERMINATED(repln);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
792 CX_TEST_ASSERT(0 == strcmp(repln.ptr, expectedn));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
793 ASSERT_ZERO_TERMINATED(longrepl);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
794 CX_TEST_ASSERT(0 == strcmp(longrepl.ptr, longexpect));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
795 ASSERT_ZERO_TERMINATED(replnotrail);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
796 CX_TEST_ASSERT(0 == strcmp(replnotrail.ptr, notrailexpect));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
797 ASSERT_ZERO_TERMINATED(repleq);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
798 CX_TEST_ASSERT(0 == strcmp(repleq.ptr, eqexpect));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
799 ASSERT_ZERO_TERMINATED(replempty1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
800 CX_TEST_ASSERT(0 == strcmp(replempty1.ptr, ""));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
801 ASSERT_ZERO_TERMINATED(replempty2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
802 CX_TEST_ASSERT(0 == strcmp(replempty2.ptr, emptyexpect2));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
803 ASSERT_ZERO_TERMINATED(replpre);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
804 CX_TEST_ASSERT(0 == strcmp(replpre.ptr, preexpected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
805 ASSERT_ZERO_TERMINATED(replan1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
806 CX_TEST_ASSERT(0 == strcmp(replan1.ptr, an1expected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
807 ASSERT_ZERO_TERMINATED(replan4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
808 CX_TEST_ASSERT(0 == strcmp(replan4.ptr, an4expected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
809 ASSERT_ZERO_TERMINATED(replan9);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
810 CX_TEST_ASSERT(0 == strcmp(replan9.ptr, an9expected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
811 ASSERT_ZERO_TERMINATED(replan10);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
812 CX_TEST_ASSERT(0 == strcmp(replan10.ptr, an10expected));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
813 ASSERT_ZERO_TERMINATED(repl1_a);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
814 CX_TEST_ASSERT(0 == strcmp(repl1_a.ptr, expeced1_a));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
815 ASSERT_ZERO_TERMINATED(repl2_a);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
816 CX_TEST_ASSERT(0 == strcmp(repl2_a.ptr, expected2_a));
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
817 ASSERT_ZERO_TERMINATED(norepl);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
818 CX_TEST_ASSERT(0 == strcmp(norepl.ptr, noreplexpect));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
819
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
820 cx_strfree_a(alloc, &repl1_a);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
821 cx_strfree_a(alloc, &repl2_a);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
822 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
823 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
824
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
825 cx_strfree(&repl);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
826 cx_strfree(&repln);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
827 cx_strfree(&longrepl);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
828 cx_strfree(&replnotrail);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
829 cx_strfree(&repleq);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
830 cx_strfree(&replempty1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
831 cx_strfree(&replempty2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
832 cx_strfree(&replpre);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
833 cx_strfree(&replan1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
834 cx_strfree(&replan4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
835 cx_strfree(&replan9);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
836 cx_strfree(&replan10);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
837 cx_strfree(&norepl);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
838 cx_testing_allocator_destroy(&talloc);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
839 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
840
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
841 CX_TEST(test_strtok) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
842 cxstring str = CX_STR("a,comma,separated,string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
843 cxstring delim = CX_STR(",");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
844 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
845 CxStrtokCtx ctx = cx_strtok(str, delim, 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
846 CX_TEST_ASSERT(ctx.str.ptr == str.ptr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
847 CX_TEST_ASSERT(ctx.str.length == str.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
848 CX_TEST_ASSERT(ctx.delim.ptr == delim.ptr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
849 CX_TEST_ASSERT(ctx.delim.length == delim.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
850 CX_TEST_ASSERT(ctx.limit == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
851 CX_TEST_ASSERT(ctx.found == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
852 CX_TEST_ASSERT(ctx.pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
853 CX_TEST_ASSERT(ctx.next_pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
854 CX_TEST_ASSERT(ctx.delim_more == NULL);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
855 CX_TEST_ASSERT(ctx.delim_more_count == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
856 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
857 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
858
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
859 CX_TEST(test_strtok_delim) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
860 cxstring str = CX_STR("an,arbitrarily|separated;string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
861 cxstring delim = CX_STR(",");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
862 cxstring delim_more[2] = {CX_STR("|"), CX_STR(";")};
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
863 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
864 CxStrtokCtx ctx = cx_strtok(str, delim, 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
865 cx_strtok_delim(&ctx, delim_more, 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
866 CX_TEST_ASSERT(ctx.str.ptr == str.ptr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
867 CX_TEST_ASSERT(ctx.str.length == str.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
868 CX_TEST_ASSERT(ctx.delim.ptr == delim.ptr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
869 CX_TEST_ASSERT(ctx.delim.length == delim.length);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
870 CX_TEST_ASSERT(ctx.limit == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
871 CX_TEST_ASSERT(ctx.found == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
872 CX_TEST_ASSERT(ctx.pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
873 CX_TEST_ASSERT(ctx.next_pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
874 CX_TEST_ASSERT(ctx.delim_more == delim_more);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
875 CX_TEST_ASSERT(ctx.delim_more_count == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
876 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
877 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
878
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
879 CX_TEST(test_strtok_next_easy) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
880 cxstring str = CX_STR("a,comma,separated,string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
881 cxstring delim = CX_STR(",");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
882 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
883 CxStrtokCtx ctx = cx_strtok(str, delim, 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
884 bool ret;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
885 cxstring tok;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
886
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
887 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
888 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
889 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("a")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
890 CX_TEST_ASSERT(ctx.pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
891 CX_TEST_ASSERT(ctx.next_pos == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
892 CX_TEST_ASSERT(ctx.delim_pos == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
893 CX_TEST_ASSERT(ctx.found == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
894
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
895 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
896 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
897 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("comma")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
898 CX_TEST_ASSERT(ctx.pos == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
899 CX_TEST_ASSERT(ctx.next_pos == 8);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
900 CX_TEST_ASSERT(ctx.delim_pos == 7);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
901 CX_TEST_ASSERT(ctx.found == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
902
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
903 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
904 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
905 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("separated")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
906 CX_TEST_ASSERT(ctx.pos == 8);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
907 CX_TEST_ASSERT(ctx.next_pos == 18);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
908 CX_TEST_ASSERT(ctx.delim_pos == 17);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
909 CX_TEST_ASSERT(ctx.found == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
910
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
911 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
912 CX_TEST_ASSERT(!ret);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
913 CX_TEST_ASSERT(ctx.pos == 8);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
914 CX_TEST_ASSERT(ctx.next_pos == 18);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
915 CX_TEST_ASSERT(ctx.delim_pos == 17);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
916 CX_TEST_ASSERT(ctx.found == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
917 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
918 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
919
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
920 CX_TEST(test_strtok_next_unlimited) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
921 cxstring str = CX_STR("some;-;otherwise;-;separated;-;string;-;");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
922 cxstring delim = CX_STR(";-;");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
923 CX_TEST_DO {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
924 CxStrtokCtx ctx = cx_strtok(str, delim, SIZE_MAX);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
925 bool ret;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
926 cxstring tok;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
927
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
928 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
929 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
930 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("some")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
931 CX_TEST_ASSERT(ctx.pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
932 CX_TEST_ASSERT(ctx.next_pos == 7);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
933 CX_TEST_ASSERT(ctx.delim_pos == 4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
934 CX_TEST_ASSERT(ctx.found == 1);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
935
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
936 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
937 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
938 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("otherwise")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
939 CX_TEST_ASSERT(ctx.pos == 7);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
940 CX_TEST_ASSERT(ctx.next_pos == 19);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
941 CX_TEST_ASSERT(ctx.delim_pos == 16);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
942 CX_TEST_ASSERT(ctx.found == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
943
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
944 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
945 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
946 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("separated")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
947 CX_TEST_ASSERT(ctx.pos == 19);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
948 CX_TEST_ASSERT(ctx.next_pos == 31);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
949 CX_TEST_ASSERT(ctx.delim_pos == 28);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
950 CX_TEST_ASSERT(ctx.found == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
951
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
952 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
953 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
954 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
955 CX_TEST_ASSERT(ctx.pos == 31);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
956 CX_TEST_ASSERT(ctx.next_pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
957 CX_TEST_ASSERT(ctx.delim_pos == 37);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
958 CX_TEST_ASSERT(ctx.found == 4);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
959
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
960 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
961 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
962 CX_TEST_ASSERT(0 == cx_strcmp(tok, cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
963 CX_TEST_ASSERT(ctx.pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
964 CX_TEST_ASSERT(ctx.next_pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
965 CX_TEST_ASSERT(ctx.delim_pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
966 CX_TEST_ASSERT(ctx.found == 5);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
967
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
968 ret = cx_strtok_next(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
969 CX_TEST_ASSERT(!ret);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
970 CX_TEST_ASSERT(ctx.pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
971 CX_TEST_ASSERT(ctx.delim_pos == 40);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
972 CX_TEST_ASSERT(ctx.found == 5);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
973 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
974 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
975
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
976 static void test_toupper(cxmutstr string) {
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
977 for (size_t i = 0; i < string.length; i++) {
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
978 if ((unsigned int)(string.ptr[i] - 'a') < 26u) {
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
979 string.ptr[i] += 'A' - 'a';
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
980 }
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
981 }
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
982 }
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
983
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
984 CX_TEST(test_strtok_next_advanced) {
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
985 cxmutstr str = cx_strdup(cx_str("an,arbitrarily;||separated;string"));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
986 cxstring delim = CX_STR(",");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
987 cxstring delim_more[2] = {CX_STR("||"), CX_STR(";")};
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
988 CX_TEST_DO {
1127
1fd31909a3f8 removes some unnecessary string functions - fixes #561
Mike Becker <universe@uap-core.de>
parents: 1126
diff changeset
989 CxStrtokCtx ctx = cx_strtok(str, delim, 10);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
990 cx_strtok_delim(&ctx, delim_more, 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
991 bool ret;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
992 cxmutstr tok;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
993
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
994 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
995 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
996 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(tok), cx_str("an")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
997 CX_TEST_ASSERT(ctx.pos == 0);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
998 CX_TEST_ASSERT(ctx.next_pos == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
999 CX_TEST_ASSERT(ctx.delim_pos == 2);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1000 CX_TEST_ASSERT(ctx.found == 1);
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
1001 test_toupper(tok);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1002
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1003 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1004 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
1005 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(tok), cx_str("arbitrarily")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1006 CX_TEST_ASSERT(ctx.pos == 3);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1007 CX_TEST_ASSERT(ctx.next_pos == 15);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1008 CX_TEST_ASSERT(ctx.delim_pos == 14);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1009 CX_TEST_ASSERT(ctx.found == 2);
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
1010 test_toupper(tok);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1011
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1012 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1013 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
1014 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(tok), cx_str("")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1015 CX_TEST_ASSERT(ctx.pos == 15);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1016 CX_TEST_ASSERT(ctx.next_pos == 17);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1017 CX_TEST_ASSERT(ctx.delim_pos == 15);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1018 CX_TEST_ASSERT(ctx.found == 3);
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
1019 test_toupper(tok);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1020
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1021 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1022 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
1023 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(tok), cx_str("separated")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1024 CX_TEST_ASSERT(ctx.pos == 17);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1025 CX_TEST_ASSERT(ctx.next_pos == 27);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1026 CX_TEST_ASSERT(ctx.delim_pos == 26);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1027 CX_TEST_ASSERT(ctx.found == 4);
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
1028 test_toupper(tok);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1029
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1030 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1031 CX_TEST_ASSERT(ret);
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
1032 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(tok), cx_str("string")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1033 CX_TEST_ASSERT(ctx.pos == 27);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1034 CX_TEST_ASSERT(ctx.next_pos == 33);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1035 CX_TEST_ASSERT(ctx.delim_pos == 33);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1036 CX_TEST_ASSERT(ctx.found == 5);
1176
247db6e629ad remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
1037 test_toupper(tok);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1038
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1039 ret = cx_strtok_next_m(&ctx, &tok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1040 CX_TEST_ASSERT(!ret);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1041 CX_TEST_ASSERT(ctx.pos == 27);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1042 CX_TEST_ASSERT(ctx.next_pos == 33);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1043 CX_TEST_ASSERT(ctx.delim_pos == 33);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1044 CX_TEST_ASSERT(ctx.found == 5);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1045
1126
20c9212b3a47 fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents: 1071
diff changeset
1046 CX_TEST_ASSERT(0 == cx_strcmp(cx_strcast(str), cx_str("AN,ARBITRARILY;||SEPARATED;STRING")));
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1047 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1048 cx_strfree(&str);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1049 }
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1050
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1051 #define test_strtoint_impl(suffix, num, base, var, min, max) \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1052 do { \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1053 errno = 0; \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1054 int r = cx_strto##var(cx_str( #num), &var, base); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1055 if ((min) <= (num##suffix) && (num##suffix) <= (max)) { \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1056 CX_TEST_ASSERTM(0 == r, "failed for "#num); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1057 CX_TEST_ASSERT(0 == errno); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1058 CX_TEST_ASSERT((num##suffix) == (0##suffix)+(var)); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1059 } else { \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1060 CX_TEST_ASSERTM(0 != r, "out-of-range not detected for "#num " in variant "#var); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1061 CX_TEST_ASSERT(ERANGE == errno); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1062 } \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1063 } while (0)
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1064
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1065 #define test_strtoint_rollout_signed_impl(num, base) \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1066 test_strtoint_impl(LL, num, base, s, SHRT_MIN, SHRT_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1067 test_strtoint_impl(LL, num, base, i, INT_MIN, INT_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1068 test_strtoint_impl(LL, num, base, l, LONG_MIN, LONG_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1069 test_strtoint_impl(LL, num, base, ll, LLONG_MIN, LLONG_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1070 test_strtoint_impl(LL, num, base, i8, INT8_MIN, INT8_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1071 test_strtoint_impl(LL, num, base, i16, INT16_MIN, INT16_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1072 test_strtoint_impl(LL, num, base, i32, INT32_MIN, INT32_MAX); \
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1155
diff changeset
1073 test_strtoint_impl(LL, num, base, i64, INT64_MIN, INT64_MAX);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1074
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1075 #define test_strtoint_rollout_signed(num, base) \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1076 test_strtoint_rollout_signed_impl(num, base); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1077 test_strtoint_rollout_signed_impl(-num, base)
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1078
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1079 #define test_strtoint_rollout(num, base) \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1080 test_strtoint_impl(ULL, num, base, us, 0, USHRT_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1081 test_strtoint_impl(ULL, num, base, u, 0, UINT_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1082 test_strtoint_impl(ULL, num, base, ul, 0, ULONG_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1083 test_strtoint_impl(ULL, num, base, ull, 0, ULLONG_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1084 test_strtoint_impl(ULL, num, base, u8, 0, UINT8_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1085 test_strtoint_impl(ULL, num, base, u16, 0, UINT16_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1086 test_strtoint_impl(ULL, num, base, u32, 0, UINT32_MAX); \
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1087 test_strtoint_impl(ULL, num, base, u64, 0, UINT64_MAX); \
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1155
diff changeset
1088 test_strtoint_impl(ULL, num, base, z, 0, SIZE_MAX)
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1089
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1090 CX_TEST(test_string_to_signed_integer) {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1091 short s;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1092 int i;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1093 long l;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1094 long long ll;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1095 int8_t i8;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1096 int16_t i16;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1097 int32_t i32;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1098 int64_t i64;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1099 CX_TEST_DO {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1100 // do some brute force tests with all ranges
1184
34d60b1664f2 add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents: 1176
diff changeset
1101 test_strtoint_rollout_signed(5, 10);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1102 test_strtoint_rollout_signed(47, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1103 test_strtoint_rollout_signed(210, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1104 test_strtoint_rollout_signed(5678, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1105 test_strtoint_rollout_signed(40678, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1106 test_strtoint_rollout_signed(1350266537, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1107 test_strtoint_rollout_signed(3350266537, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1108 test_strtoint_rollout_signed(473350266537, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1109 test_strtoint_rollout_signed(057, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1110 test_strtoint_rollout_signed(0322, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1111 test_strtoint_rollout_signed(013056, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1112 test_strtoint_rollout_signed(0117346, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1113 test_strtoint_rollout_signed(012036667251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1114 test_strtoint_rollout_signed(030754201251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1115 test_strtoint_rollout_signed(06706567757251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1116 test_strtoint_rollout_signed(0767716340165362204025, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1117 test_strtoint_rollout_signed(0x65, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1118 test_strtoint_rollout_signed(0xf5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1119 test_strtoint_rollout_signed(0xABC5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1120 test_strtoint_rollout_signed(0xFBC5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1121 test_strtoint_rollout_signed(0x6df9CE03, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1122 test_strtoint_rollout_signed(0xFdf9CE03, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1123 test_strtoint_rollout_signed(0x6df9CE03AbC90815, 16);
1410
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1124 #if __STDC_VERSION__ >= 202300L
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1125 test_strtoint_rollout_signed(0b01000010100100101110101001110101, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1126 test_strtoint_rollout_signed(0b00011010101100001111111001010100, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1127 test_strtoint_rollout_signed(0b10110001001001010001010111010011, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1128 #endif
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1129
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1130 // do some special case tests
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1131 // --------------------------
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1132
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1133 // can fit only in unsigned long long
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1134 errno = 0;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1135 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("0x8df9CE03AbC90815"), &ll, 16));
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1136 CX_TEST_ASSERT(errno == ERANGE);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1137
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1138 // negative overflow (we only test for 64 bit long long)
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1139 #if LLONG_MAX == 9223372036854775807ll
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1140 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1141 CX_TEST_ASSERT(0 == cx_strtoll(cx_str("-9223372036854775808"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1142 CX_TEST_ASSERT(ll == LLONG_MIN);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1143 CX_TEST_ASSERT(errno == 0);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1144 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("-9223372036854775809"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1145 CX_TEST_ASSERT(errno == ERANGE);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1146 #endif
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1147
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1148 // edge case: empty and NULL string
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1149 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1150 CX_TEST_ASSERT(0 != cx_strtoll(cx_str(""), &ll, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1151 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1152 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1153 CX_TEST_ASSERT(0 != cx_strtoll(cx_str(NULL), &ll, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1154 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1155
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1156 // edge case: unsupported base
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1157 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1158 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("7"), &ll, 12));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1159 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1160
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1161 // edge case: incorrect sign characters
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1162 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1163 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("-"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1164 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1165 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1166 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("+"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1167 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1168 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1169 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("-+15"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1170 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1171 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1172 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("--15"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1173 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1174 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1175 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("+-15"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1176 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1177 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1178 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("++15"), &ll, 10));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1179 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1180
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1181 // edge case: only the sign bit is set
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1182 errno = 0;
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1183 CX_TEST_ASSERT(0 != cx_strtoi16(cx_str("0x8000"), &i16, 16));
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1184 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1185 errno = 0;
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1186 CX_TEST_ASSERT(0 == cx_strtoi16(cx_str("-0x8000"), &i16, 16));
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1187 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1188 CX_TEST_ASSERT(i16 == INT16_MIN);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1189 errno = 0;
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1190 CX_TEST_ASSERT(0 != cx_strtoi64(cx_str("X8000000000000000"), &i64, 16));
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1191 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1192 errno = 0;
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1193 CX_TEST_ASSERT(0 == cx_strtoi64(cx_str("-X8000000000000000"), &i64, 16));
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1194 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1195 CX_TEST_ASSERT(i64 == INT64_MIN);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1196
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1197 // group separators
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1198 CX_TEST_ASSERT(0 == cx_strtoi32(cx_str("-123,456"), &i32, 10));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1199 CX_TEST_ASSERT(i32 == -123456);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1200 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1201 CX_TEST_ASSERT(0 != cx_strtoi16_lc(cx_str("-Xab,cd"), &i16, 16, "'"));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1202 CX_TEST_ASSERT(errno == EINVAL);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1203 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1204 CX_TEST_ASSERT(0 != cx_strtoi16_lc(cx_str("-X'ab'cd"), &i16, 16, "'"));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1205 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1206 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1207 CX_TEST_ASSERT(0 == cx_strtoi16_lc(cx_str("-X'67'89"), &i16, 16, "'"));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1208 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1209 CX_TEST_ASSERT(i16 == -0x6789);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1210
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1211 // binary and (unusual notation of) signed binary
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1212 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1213 CX_TEST_ASSERT(0 != cx_strtoi8_lc(cx_str("-1010 1011"), &i8, 2, " "));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1214 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1215 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1216 CX_TEST_ASSERT(0 != cx_strtoi8_lc(cx_str("1010 1011"), &i8, 2, " "));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1217 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1218 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1219 CX_TEST_ASSERT(0 == cx_strtoi8_lc(cx_str("-0101 0101"), &i8, 2, " "));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1220 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1221 CX_TEST_ASSERT(i8 == -0x55);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1222 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1223 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1224
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1225 CX_TEST(test_string_to_unsigned_integer) {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1226 unsigned short us;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1227 unsigned int u;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1228 unsigned long ul;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1229 unsigned long long ull;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1230 uint8_t u8;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1231 uint16_t u16;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1232 uint32_t u32;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1233 uint64_t u64;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1155
diff changeset
1234 size_t z;
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1235 CX_TEST_DO {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1236 // do some brute force tests with all ranges
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1237 test_strtoint_rollout(0, 10);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1238 test_strtoint_rollout(47, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1239 test_strtoint_rollout(210, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1240 test_strtoint_rollout(5678, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1241 test_strtoint_rollout(40678, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1242 test_strtoint_rollout(1350266537, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1243 test_strtoint_rollout(3350266537, 10);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1244 test_strtoint_rollout(473350266537, 10);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1245 test_strtoint_rollout(0, 8);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1246 test_strtoint_rollout(057, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1247 test_strtoint_rollout(0322, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1248 test_strtoint_rollout(013056, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1249 test_strtoint_rollout(0117346, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1250 test_strtoint_rollout(012036667251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1251 test_strtoint_rollout(030754201251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1252 test_strtoint_rollout(06706567757251, 8);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1253 test_strtoint_rollout(01767716340165362204025, 8);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1254 test_strtoint_rollout(0x0, 16);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1255 test_strtoint_rollout(0, 16);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1256 test_strtoint_rollout(0x65, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1257 test_strtoint_rollout(0xf5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1258 test_strtoint_rollout(0xABC5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1259 test_strtoint_rollout(0xFBC5, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1260 test_strtoint_rollout(0x6df9CE03, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1261 test_strtoint_rollout(0xFdf9CE03, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1262 test_strtoint_rollout(0x6df9CE03AbC90815, 16);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1263 test_strtoint_rollout(0xfdf9CE03AbC90815, 16);
1410
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1264 #if __STDC_VERSION__ >= 202300L
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1265 test_strtoint_rollout(0b0, 2);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1266 test_strtoint_rollout(0, 2);
1410
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1267 test_strtoint_rollout(0b01000010100100101110101001110101, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1268 test_strtoint_rollout(0b00011010101100001111111001010100, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1269 test_strtoint_rollout(0b10110001001001010001010111010011, 2);
be4071f5e9aa resolve TODO: test C23 base-2 literals
Mike Becker <universe@uap-core.de>
parents: 1304
diff changeset
1270 #endif
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1271
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1272 // do some special case tests
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1273 // --------------------------
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1274
1184
34d60b1664f2 add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents: 1176
diff changeset
1275 // leading plus
34d60b1664f2 add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents: 1176
diff changeset
1276 CX_TEST_ASSERT(0 == cx_strtou32(cx_str("+5"), &u32, 10));
34d60b1664f2 add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents: 1176
diff changeset
1277 CX_TEST_ASSERT(u32 == 5);
34d60b1664f2 add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents: 1176
diff changeset
1278
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1279 // group separators
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1280 CX_TEST_ASSERT(0 == cx_strtou32(cx_str("123,456"), &u32, 10));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1281 CX_TEST_ASSERT(u32 == 123456);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1282 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1283 CX_TEST_ASSERT(0 != cx_strtou16_lc(cx_str("ab,cd"), &u16, 16, "'"));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1284 CX_TEST_ASSERT(errno == EINVAL);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1285 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1286 CX_TEST_ASSERT(0 == cx_strtou16_lc(cx_str("ab'cd"), &u16, 16, "'"));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1287 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1288 CX_TEST_ASSERT(u16 == 0xabcd);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1289
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1290 // binary
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1291 errno = 0;
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1292 CX_TEST_ASSERT(0 != cx_strtou8_lc(cx_str("1 1010 1011"), &u8, 2, " "));
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1293 CX_TEST_ASSERT(errno == ERANGE);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1294 errno = 0;
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1295 CX_TEST_ASSERT(0 == cx_strtou8_lc(cx_str("1010 1011"), &u8, 2, " "));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1296 CX_TEST_ASSERT(errno == 0);
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1297 CX_TEST_ASSERT(u8 == 0xAB);
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1298
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1299 // edge case: empty and NULL string
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1300 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1301 CX_TEST_ASSERT(0 != cx_strtoull(cx_str(""), &ull, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1302 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1303 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1304 CX_TEST_ASSERT(0 != cx_strtoull(cx_str(NULL), &ull, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1305 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1306
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1307 // edge case: unsupported base
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1308 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1309 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("7"), &ull, 12));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1310 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1311
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1312 // edge case: prefix only
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1313 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1314 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("0b"), &ull, 2));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1315 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1316 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1317 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("b"), &ull, 2));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1318 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1319 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1320 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("0x"), &ull, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1321 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1322 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1323 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("x"), &ull, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1324 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1325 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1326 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("#"), &ull, 16));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1327 CX_TEST_ASSERT(errno == EINVAL);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1328 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1329 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1330
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1331 CX_TEST(test_string_to_float) {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1332 float f;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1333 CX_TEST_DO {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1334 CX_TEST_ASSERT(0 == cx_strtof(cx_str("11.3"), &f));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1335 CX_TEST_ASSERT(0 == cx_vcmp_float(11.3f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1336
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1337 CX_TEST_ASSERT(0 == cx_strtof(cx_str("-4.711e+1"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1338 CX_TEST_ASSERT(0 == cx_vcmp_float(-47.11f, f));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1339
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1340 CX_TEST_ASSERT(0 == cx_strtof(cx_str("1.67262192595e-27"), &f));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1341 CX_TEST_ASSERT(0 == cx_vcmp_float(1.67262192595e-27f, f));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1342
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1343 CX_TEST_ASSERT(0 == cx_strtof_lc(cx_str("138,339.4"), &f, '.', ","));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1344 CX_TEST_ASSERT(0 == cx_vcmp_float(138339.4f, f));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1345
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1346 CX_TEST_ASSERT(0 == cx_strtof_lc(cx_str("138,339.4"), &f, ',', "."));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1347 CX_TEST_ASSERT(0 == cx_vcmp_float(138.3394f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1348
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1349 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1350 CX_TEST_ASSERT(0 != cx_strtof(cx_str("15e"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1351 CX_TEST_ASSERT(errno == EINVAL);
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1352 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1353 CX_TEST_ASSERT(0 != cx_strtof(cx_str("15e+"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1354 CX_TEST_ASSERT(errno == EINVAL);
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1355 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1356 CX_TEST_ASSERT(0 != cx_strtof(cx_str("15e-"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1357 CX_TEST_ASSERT(errno == EINVAL);
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1358 CX_TEST_ASSERT(0 == cx_strtof(cx_str("15e-0"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1359 CX_TEST_ASSERT(0 == cx_vcmp_float(15.f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1360
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1361 CX_TEST_ASSERT(0 == cx_strtof(cx_str("3e38"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1362 CX_TEST_ASSERT(0 == cx_vcmp_float(3e38f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1363 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1364 CX_TEST_ASSERT(0 != cx_strtof(cx_str("3e39"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1365 CX_TEST_ASSERT(errno == ERANGE);
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1366 CX_TEST_ASSERT(0 == cx_strtof(cx_str("-3e38"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1367 CX_TEST_ASSERT(0 == cx_vcmp_float(-3e38f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1368 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1369 CX_TEST_ASSERT(0 != cx_strtof(cx_str("-3e39"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1370 CX_TEST_ASSERT(errno == ERANGE);
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1371 CX_TEST_ASSERT(0 == cx_strtof(cx_str("1.18e-38"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1372 CX_TEST_ASSERT(0 == cx_vcmp_float(1.18e-38f, f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1373 errno = 0;
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1374 CX_TEST_ASSERT(0 != cx_strtof(cx_str("1.17e-38"), &f));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1375 CX_TEST_ASSERT(errno == ERANGE);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1376 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1377 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1378
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1379 CX_TEST(test_string_to_double) {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1380 double d;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1381 CX_TEST_DO {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1382 CX_TEST_ASSERT(0 == cx_strtod(cx_str("11.3"), &d));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1383 CX_TEST_ASSERT(0 == cx_vcmp_double(11.3, d));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1384
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1385 CX_TEST_ASSERT(0 == cx_strtod(cx_str("13."), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1386 CX_TEST_ASSERT(0 == cx_vcmp_double(13.0, d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1387
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1388 CX_TEST_ASSERT(0 == cx_strtod(cx_str("47"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1389 CX_TEST_ASSERT(0 == cx_vcmp_double(47.0, d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1390
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1391 CX_TEST_ASSERT(0 == cx_strtod(cx_str("-13.37"), &d));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1392 CX_TEST_ASSERT(0 == cx_vcmp_double(-13.37, d));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1393
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1394 CX_TEST_ASSERT(0 == cx_strtod(cx_str("-4.711e+1"), &d));
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1395 CX_TEST_ASSERT(0 == cx_vcmp_double(-47.11, d));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1396
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1397 CX_TEST_ASSERT(0 == cx_strtod(cx_str("1.67262192595e-27"), &d));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1398 CX_TEST_ASSERT(0 == cx_vcmp_double(1.67262192595e-27, d));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1399
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1400 CX_TEST_ASSERT(0 == cx_strtod_lc(cx_str("138,339.4"), &d, '.', ","));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1401 CX_TEST_ASSERT(0 == cx_vcmp_double(138339.4, d));
1061
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1402
c7d23892eab5 implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
1403 CX_TEST_ASSERT(0 == cx_strtod_lc(cx_str("138,339.4"), &d, ',', "."));
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1404 CX_TEST_ASSERT(0 == cx_vcmp_double(138.3394, d));
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1405
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1406 CX_TEST_ASSERT(0 == cx_strtod_lc(cx_str("13.37e04.7"), &d, ',', "."));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1407 CX_TEST_ASSERT(0 == cx_vcmp_double(1337e47, d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1408
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1409 d = 47.11;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1410 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1411 CX_TEST_ASSERT(0 != cx_strtod(cx_str(""), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1412 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1413 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1414 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1415 CX_TEST_ASSERT(0 != cx_strtod(cx_str(NULL), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1416 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1417 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1418 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1419 CX_TEST_ASSERT(0 != cx_strtod(cx_str("+"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1420 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1421 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1422 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1423 CX_TEST_ASSERT(0 != cx_strtod(cx_str("-"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1424 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1425 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1426 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1427 CX_TEST_ASSERT(0 != cx_strtod(cx_str("+-5"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1428 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1429 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1430 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1431 CX_TEST_ASSERT(0 != cx_strtod(cx_str("-+5"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1432 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1433 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1434 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1435 CX_TEST_ASSERT(0 != cx_strtod(cx_str("++5"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1436 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1437 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1438 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1439 CX_TEST_ASSERT(0 != cx_strtod(cx_str("--5"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1440 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1441 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1442
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1443 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1444 CX_TEST_ASSERT(0 != cx_strtod_lc(cx_str("."), &d, '.', "'"));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1445 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1446 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1447
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1448 errno = 0;
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1449 CX_TEST_ASSERT(0 != cx_strtod(cx_str("19e0x5"), &d));
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1450 CX_TEST_ASSERT(errno == EINVAL);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1451 CX_TEST_ASSERT(d == 47.11);
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
1452
1063
e453e717876e implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents: 1061
diff changeset
1453 // TODO: test and improve support for big numbers, precision, and out-of-range detection
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1454 }
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1455 }
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1456
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1457 CX_TEST(test_string_to_number_notrim) {
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1458 long long i;
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1459 unsigned long long u;
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1460 float f;
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1461 double d;
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1462 CX_TEST_DO {
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1463 CX_TEST_ASSERT(0 != cx_strtoll(cx_str("-42 "), &i, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1464 CX_TEST_ASSERT(0 != cx_strtoll(cx_str(" -42"), &i, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1465 CX_TEST_ASSERT(0 == cx_strtoll(cx_str("-42"), &i, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1466 CX_TEST_ASSERT(i == -42);
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1467
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1468 CX_TEST_ASSERT(0 != cx_strtoull(cx_str("42 "), &u, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1469 CX_TEST_ASSERT(0 != cx_strtoull(cx_str(" 42"), &u, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1470 CX_TEST_ASSERT(0 == cx_strtoull(cx_str("42"), &u, 10));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1471 CX_TEST_ASSERT(u == 42);
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1472
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1473 CX_TEST_ASSERT(0 != cx_strtof(cx_str("13.37 "), &f));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1474 CX_TEST_ASSERT(0 != cx_strtof(cx_str(" 13.37"), &f));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1475 CX_TEST_ASSERT(0 == cx_strtof(cx_str("13.37"), &f));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1476 CX_TEST_ASSERT(0 == cx_vcmp_float(f, 13.37f));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1477
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1478 CX_TEST_ASSERT(0 != cx_strtod(cx_str("13.37 "), &d));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1479 CX_TEST_ASSERT(0 != cx_strtod(cx_str(" 13.37"), &d));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1480 CX_TEST_ASSERT(0 == cx_strtod(cx_str("13.37"), &d));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1481 CX_TEST_ASSERT(0 == cx_vcmp_double(d, 13.37));
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1482 }
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1483 }
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1484
1297
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1485 CX_TEST(test_strformat) {
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1486 cxstring str = CX_STR("Hello, World!");
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1487 CX_TEST_DO {
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1488 char actual[64];
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1489 snprintf(actual, 64, "Test %"CX_PRIstr " Success.", CX_SFMT(str));
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1490 CX_TEST_ASSERT(0 == strncmp("Test Hello, World! Success.", actual, 64));
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1491 }
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1492 }
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1493
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1494 CxTestSuite *cx_test_suite_string(void) {
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1495 CxTestSuite *suite = cx_test_suite_new("string");
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1496
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1497 cx_test_register(suite, test_string_construct);
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1412
diff changeset
1498 cx_test_register(suite, test_string_cast);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1499 cx_test_register(suite, test_strfree);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1500 cx_test_register(suite, test_strdup);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1501 cx_test_register(suite, test_strdup_shortened);
1304
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
1502 cx_test_register(suite, test_strcpy);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1503 cx_test_register(suite, test_strlen);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1504 cx_test_register(suite, test_strsubs);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1505 cx_test_register(suite, test_strchr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1506 cx_test_register(suite, test_strrchr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1507 cx_test_register(suite, test_strstr);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1508 cx_test_register(suite, test_strcmp);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1509 cx_test_register(suite, test_strcasecmp);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1510 cx_test_register(suite, test_strcat);
1003
455afb252878 add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents: 926
diff changeset
1511 cx_test_register(suite, test_strcat_more_than_eight);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1512 cx_test_register(suite, test_strsplit);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1513 cx_test_register(suite, test_strsplit_a);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1514 cx_test_register(suite, test_strtrim);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1515 cx_test_register(suite, test_strprefix);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1516 cx_test_register(suite, test_strsuffix);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1517 cx_test_register(suite, test_strcaseprefix);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1518 cx_test_register(suite, test_strcasesuffix);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1519 cx_test_register(suite, test_strreplace);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1520 cx_test_register(suite, test_strtok);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1521 cx_test_register(suite, test_strtok_delim);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1522 cx_test_register(suite, test_strtok_next_easy);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1523 cx_test_register(suite, test_strtok_next_unlimited);
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1524 cx_test_register(suite, test_strtok_next_advanced);
1297
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1184
diff changeset
1525 cx_test_register(suite, test_strformat);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1526
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1527 return suite;
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1528 }
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1529
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1530 CxTestSuite *cx_test_suite_string_to_number(void) {
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1531 CxTestSuite *suite = cx_test_suite_new("string to number");
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1532
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1533 cx_test_register(suite, test_string_to_signed_integer);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1534 cx_test_register(suite, test_string_to_unsigned_integer);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1535 cx_test_register(suite, test_string_to_float);
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1536 cx_test_register(suite, test_string_to_double);
1155
b77d56a27e9c do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents: 1127
diff changeset
1537 cx_test_register(suite, test_string_to_number_notrim);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1538
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1539 return suite;
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 1003
diff changeset
1540 }

mercurial