Fri, 23 May 2025 12:44:24 +0200
make test-compile depend on both static and shared
the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build
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); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
46 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | CX_TEST_ASSERT(s1.length == 4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | 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
|
49 | CX_TEST_ASSERT(s2.length == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
50 | 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
|
51 | CX_TEST_ASSERT(s3.length == 4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
52 | 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
|
53 | CX_TEST_ASSERT(s4.length == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
54 | CX_TEST_ASSERT(strncmp(s4.ptr, "ab", 2) == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
56 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
58 | CX_TEST(test_strfree) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | CxTestingAllocator talloc; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
60 | cx_testing_allocator_init(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
61 | CxAllocator *alloc = &talloc.base; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
62 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
63 | char *test = cxMalloc(alloc, 16); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
64 | cxmutstr str = cx_mutstrn(test, 16); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
65 | CX_TEST_ASSERT(str.ptr == test); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
66 | CX_TEST_ASSERT(str.length == 16); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
67 | cx_strfree_a(alloc, &str); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
68 | CX_TEST_ASSERT(str.ptr == NULL); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
69 | CX_TEST_ASSERT(str.length == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
70 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
71 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
72 | cx_testing_allocator_destroy(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
73 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
74 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
75 | CX_TEST(test_strdup) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
76 | cxstring str = CX_STR("test"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | cxmutstr dup = cx_strdup(str); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | CX_TEST_ASSERT(dup.length == str.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
80 | 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
|
81 | ASSERT_ZERO_TERMINATED(dup); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
82 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
83 | cx_strfree(&dup); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
84 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
85 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
86 | CX_TEST(test_strdup_shortened) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
87 | cxstring str = CX_STR("test"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
88 | str.length = 2; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
89 | cxmutstr dup = cx_strdup(str); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
90 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | CX_TEST_ASSERT(dup.length == str.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
92 | CX_TEST_ASSERT(0 == strcmp(dup.ptr, "te")); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
93 | ASSERT_ZERO_TERMINATED(dup); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
94 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
95 | cx_strfree(&dup); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
96 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
97 | |
1304
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
98 | CX_TEST(test_strcpy) { |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
99 | CxTestingAllocator talloc; |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
100 | cx_testing_allocator_init(&talloc); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
101 | const CxAllocator *alloc = &talloc.base; |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
102 | cxstring str = CX_STR("test string"); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
103 | 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
|
104 | cxmutstr dup; |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
105 | CX_TEST_DO { |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
106 | // copy into a smaller string |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
107 | 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
|
108 | 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
|
109 | 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
|
110 | ASSERT_ZERO_TERMINATED(dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
111 | cx_strfree_a(alloc, &dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
112 | |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
113 | // copy into a larger string |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
114 | 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
|
115 | 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
|
116 | 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
|
117 | ASSERT_ZERO_TERMINATED(dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
118 | cx_strfree_a(alloc, &dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
119 | |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
120 | // copy into an equal-length string |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
121 | 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
|
122 | 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
|
123 | 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
|
124 | ASSERT_ZERO_TERMINATED(dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
125 | cx_strfree_a(alloc, &dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
126 | |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
127 | // copy into a NULL-string |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
128 | dup.ptr = NULL; |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
129 | 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
|
130 | 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
|
131 | ASSERT_ZERO_TERMINATED(dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
132 | cx_strfree_a(alloc, &dup); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
133 | } |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
134 | cx_testing_allocator_destroy(&talloc); |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
135 | } |
57e062a4bb05
adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents:
1297
diff
changeset
|
136 | |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
137 | CX_TEST(test_strlen) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
138 | cxstring s1 = CX_STR("1234"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
139 | cxstring s2 = CX_STR(".:.:."); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
140 | cxstring s3 = CX_STR("X"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
141 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
142 | size_t len0 = cx_strlen(0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
143 | size_t len1 = cx_strlen(1, s1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
144 | size_t len2 = cx_strlen(2, s1, s2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
145 | 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
|
146 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
147 | CX_TEST_ASSERT(len0 == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
148 | CX_TEST_ASSERT(len1 == 4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
149 | CX_TEST_ASSERT(len2 == 9); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
150 | CX_TEST_ASSERT(len3 == 10); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
151 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
152 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
153 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
154 | CX_TEST(test_strsubs) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | cxstring str = CX_STR("A test string"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
156 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
157 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
158 | cxstring sub = cx_strsubs(str, 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
159 | CX_TEST_ASSERT(0 == cx_strcmp(sub, str)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
160 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
161 | 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
|
162 | 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
|
163 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
164 | 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
|
165 | 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
|
166 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
167 | 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
|
168 | 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
|
169 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
170 | 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
|
171 | 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
|
172 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
173 | 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
|
174 | 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
|
175 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
176 | 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
|
177 | 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
|
178 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
179 | // just for coverage, call the _m variant |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
180 | 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
|
181 | 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
|
182 | } |
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 | CX_TEST(test_strchr) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
186 | 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
|
187 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
188 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
189 | cxstring notfound = cx_strchr(str, 'x'); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
190 | CX_TEST_ASSERT(notfound.length == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
191 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
192 | cxstring result = cx_strchr(str, 'w'); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
193 | CX_TEST_ASSERT(result.length == 35); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
194 | 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
|
195 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
196 | // just for coverage, call the _m variant |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
197 | 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
|
198 | 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
|
199 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
200 | } |
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 | CX_TEST(test_strrchr) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
203 | 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
|
204 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
205 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
206 | cxstring notfound = cx_strrchr(str, 'x'); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
207 | CX_TEST_ASSERT(notfound.length == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
208 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
209 | cxstring result = cx_strrchr(str, 'w'); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
210 | CX_TEST_ASSERT(result.length == 13); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
211 | 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
|
212 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
213 | // just for coverage, call the _m variant |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
214 | 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
|
215 | 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
|
216 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
217 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
218 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
219 | CX_TEST(test_strstr) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
220 | 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
|
221 | |
926
8fdd8d78c14b
fix several survivors of east-const and some missing consts
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
222 | 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
|
223 | 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
|
224 | |
809
b7e2e1d7ed22
fix assertion failure depending on possibly uninitialized memory
Mike Becker <universe@uap-core.de>
parents:
806
diff
changeset
|
225 | // 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
|
226 | // 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
|
227 | // 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
|
228 | 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
|
229 | 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
|
230 | |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
231 | memcpy(longstrc, |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
232 | "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl" |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
233 | "mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx" |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
234 | "yzabcdeababababnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij" |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
235 | "klmnopqrstuvwxyzaababababababababrstuvwxyzabcdefghijklmnopqrstuv" |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
236 | "abababababababababababababababababababababababababababababababab", |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
237 | 320 |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
238 | ); |
806
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
239 | memcpy(longstrpatternc, |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
240 | "abababababababababababababababababababababababababababababababab", |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
241 | 64 |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | ); |
806
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
243 | 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
|
244 | 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
|
245 | 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
|
246 | 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
|
247 | 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
|
248 | } |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
249 | 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
|
250 | 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
|
251 | |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
252 | 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
|
253 | 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
|
254 | 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
|
255 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
256 | 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
|
257 | 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
|
258 | CX_TEST_ASSERT(notfound.length == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
259 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
260 | 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
|
261 | CX_TEST_ASSERT(result.length == 20); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
262 | 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
|
263 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
264 | result = cx_strstr(str, cx_str("")); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
265 | CX_TEST_ASSERT(result.length == str.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
266 | 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
|
267 | |
806
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
268 | 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
|
269 | 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
|
270 | 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
|
271 | } |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
272 | |
806
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
273 | free(longstrc); |
e06249e09f99
add constant for reading out strstr sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
777
diff
changeset
|
274 | free(longstrpatternc); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
275 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
276 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
277 | CX_TEST(test_strcmp) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
278 | cxstring str = CX_STR("compare this"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
279 | 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
|
280 | 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
|
281 | 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
|
282 | 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
|
283 | 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
|
284 | 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
|
285 | 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
|
286 | 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
|
287 | 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
|
288 | 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
|
289 | 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
|
290 | 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
|
291 | 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
|
292 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
293 | cxstring str2 = CX_STR("Compare This"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
294 | 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
|
295 | str2 = CX_STR("compare this"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
296 | 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
|
297 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
298 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
299 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
300 | CX_TEST(test_strcasecmp) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
301 | cxstring str = CX_STR("compare this"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
302 | 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
|
303 | 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
|
304 | 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
|
305 | 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
|
306 | 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
|
307 | 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
|
308 | 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
|
309 | 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
|
310 | 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
|
311 | 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
|
312 | 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
|
313 | 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
|
314 | 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
|
315 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
316 | cxstring str2 = CX_STR("Compare This"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
317 | 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
|
318 | str2 = CX_STR("Compare Tool"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
319 | 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
|
320 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
321 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
322 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
323 | CX_TEST(test_strcat) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
324 | cxstring s1 = CX_STR("12"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
325 | cxstring s2 = CX_STR("34"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
326 | cxstring s3 = CX_STR("56"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
327 | cxstring sn = {NULL, 0}; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
328 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
329 | CxTestingAllocator talloc; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
330 | cx_testing_allocator_init(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
331 | CxAllocator *alloc = &talloc.base; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
332 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
333 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
334 | 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
|
335 | 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
|
336 | ASSERT_ZERO_TERMINATED(t1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
337 | cx_strfree_a(alloc, &t1); |
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 | 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
|
340 | 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
|
341 | ASSERT_ZERO_TERMINATED(t2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
342 | cx_strfree_a(alloc, &t2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
343 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
344 | 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
|
345 | 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
|
346 | ASSERT_ZERO_TERMINATED(t3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
347 | cx_strfree_a(alloc, &t3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
348 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
349 | 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
|
350 | 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
|
351 | ASSERT_ZERO_TERMINATED(t4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
352 | cx_strfree_a(alloc, &t4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
353 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
354 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
355 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
356 | // use the macro |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
357 | 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
|
358 | 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
|
359 | ASSERT_ZERO_TERMINATED(t5); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
360 | cx_strfree(&t5); |
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 | // 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
|
363 | 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
|
364 | 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
|
365 | 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
|
366 | ASSERT_ZERO_TERMINATED(t6); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
367 | cx_strfree(&t6); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
368 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
369 | cx_testing_allocator_destroy(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
370 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
371 | |
1003
455afb252878
add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
372 | 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
|
373 | 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
|
374 | 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
|
375 | 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
|
376 | 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
|
377 | 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
|
378 | 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
|
379 | 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
|
380 | 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
|
381 | 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
|
382 | |
455afb252878
add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
383 | 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
|
384 | 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
|
385 | 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
|
386 | 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
|
387 | 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
|
388 | } |
455afb252878
add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
389 | } |
455afb252878
add test case to cover new branches inside cx_strcat_ma()
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
390 | |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
391 | CX_TEST(test_strsplit) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
392 | 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
|
393 | size_t capa = 8; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
394 | cxstring list[8]; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
395 | size_t n; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
396 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
397 | // 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
|
398 | 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
|
399 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
400 | 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
|
401 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
402 | // 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
|
403 | 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
|
404 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
405 | 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
|
406 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
407 | // 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
|
408 | 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
|
409 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
410 | 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
|
411 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
412 | // 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
|
413 | 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
|
414 | 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
|
415 | 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
|
416 | 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
|
417 | 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
|
418 | 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
|
419 | 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
|
420 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
421 | // 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
|
422 | 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
|
423 | 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
|
424 | 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
|
425 | 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
|
426 | 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
|
427 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
428 | // 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
|
429 | 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
|
430 | 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
|
431 | 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
|
432 | 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
|
433 | 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
|
434 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
435 | // 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
|
436 | 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
|
437 | 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
|
438 | 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
|
439 | 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
|
440 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
441 | // 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
|
442 | 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
|
443 | 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
|
444 | 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
|
445 | 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
|
446 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
447 | // 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
|
448 | 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
|
449 | 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
|
450 | 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
|
451 | 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
|
452 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
453 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
454 | // 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
|
455 | 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
|
456 | 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
|
457 | 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
|
458 | 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
|
459 | 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
|
460 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
461 | // 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
|
462 | 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
|
463 | 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
|
464 | 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
|
465 | 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
|
466 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
467 | // 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
|
468 | 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
|
469 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
470 | 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
|
471 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
472 | // 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
|
473 | 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
|
474 | 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
|
475 | 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
|
476 | 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
|
477 | 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
|
478 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
479 | // call the _m variant just for coverage |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
480 | cxmutstr mtest = cx_strdup(test); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
481 | 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
|
482 | 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
|
483 | 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
|
484 | 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
|
485 | 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
|
486 | 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
|
487 | cx_strfree(&mtest); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
488 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
489 | } |
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 | CX_TEST(test_strsplit_a) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
492 | CxTestingAllocator talloc; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
493 | cx_testing_allocator_init(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
494 | CxAllocator *alloc = &talloc.base; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
495 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
496 | 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
|
497 | size_t capa = 8; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
498 | cxstring *list; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
499 | size_t n; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
500 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
501 | // 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
|
502 | 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
|
503 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
504 | 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
|
505 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
506 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
507 | // 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
|
508 | 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
|
509 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
510 | 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
|
511 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
512 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
513 | // 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
|
514 | 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
|
515 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
516 | 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
|
517 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
518 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
519 | // 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
|
520 | 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
|
521 | 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
|
522 | 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
|
523 | 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
|
524 | 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
|
525 | 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
|
526 | 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
|
527 | cxFree(alloc, list); |
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 | // 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
|
530 | 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
|
531 | 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
|
532 | 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
|
533 | 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
|
534 | 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
|
535 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
536 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
537 | // 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
|
538 | 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
|
539 | 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
|
540 | 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
|
541 | 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
|
542 | 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
|
543 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
544 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
545 | // 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
|
546 | 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
|
547 | 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
|
548 | 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
|
549 | 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
|
550 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
551 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
552 | // 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
|
553 | 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
|
554 | 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
|
555 | 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
|
556 | 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
|
557 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
558 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
559 | // 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
|
560 | 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
|
561 | 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
|
562 | 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
|
563 | 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
|
564 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
565 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
566 | // 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
|
567 | 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
|
568 | 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
|
569 | 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
|
570 | 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
|
571 | 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
|
572 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
573 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
574 | // 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
|
575 | 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
|
576 | 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
|
577 | 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
|
578 | 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
|
579 | cxFree(alloc, list); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
580 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
581 | // 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
|
582 | 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
|
583 | CX_TEST_ASSERT(n == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
584 | 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
|
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 | // 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
|
588 | 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
|
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("th"))); |
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(""))); |
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 | // call the _m variant just for coverage |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
596 | cxmutstr mtest = cx_strdup(test); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
597 | 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
|
598 | 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
|
599 | 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
|
600 | 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
|
601 | 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
|
602 | 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
|
603 | cxFree(alloc, mlist); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
604 | cx_strfree(&mtest); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
605 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
606 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
607 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
608 | cx_testing_allocator_destroy(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
609 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
610 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
611 | 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
|
612 | 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
|
613 | 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
|
614 | 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
|
615 | 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
|
616 | 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
|
617 | cxstring empty = cx_strtrim(cx_str("")); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
618 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
619 | 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
|
620 | 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
|
621 | 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
|
622 | 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
|
623 | 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
|
624 | 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
|
625 | 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
|
626 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
627 | // call the _m variant just for coverage |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
628 | 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
|
629 | 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
|
630 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
631 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
632 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
633 | CX_TEST(test_strprefix) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
634 | 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
|
635 | cxstring empty = CX_STR(""); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
636 | 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
|
637 | 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
|
638 | CX_TEST_ASSERT(cx_strprefix(str, empty)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
639 | 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
|
640 | 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
|
641 | 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
|
642 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
643 | } |
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 | CX_TEST(test_strsuffix) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
646 | 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
|
647 | cxstring empty = CX_STR(""); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
648 | 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
|
649 | 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
|
650 | CX_TEST_ASSERT(cx_strsuffix(str, empty)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
651 | 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
|
652 | 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
|
653 | 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
|
654 | } |
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 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
657 | CX_TEST(test_strcaseprefix) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
658 | 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
|
659 | cxstring empty = CX_STR(""); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
660 | 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
|
661 | 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
|
662 | CX_TEST_ASSERT(cx_strcaseprefix(str, empty)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
663 | 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
|
664 | 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
|
665 | 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
|
666 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
667 | } |
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(test_strcasesuffix) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
670 | 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
|
671 | cxstring empty = CX_STR(""); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
672 | 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
|
673 | 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
|
674 | CX_TEST_ASSERT(cx_strcasesuffix(str, empty)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
675 | 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
|
676 | 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
|
677 | 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
|
678 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
679 | } |
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 | CX_TEST(test_strreplace) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
682 | CxTestingAllocator talloc; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
683 | cx_testing_allocator_init(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
684 | CxAllocator *alloc = &talloc.base; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
685 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
686 | cxstring str = CX_STR("test ababab string aba"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
687 | cxstring longstr = CX_STR( |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
688 | "xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
689 | cxstring notrail = CX_STR("test abab"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
690 | cxstring empty = CX_STR(""); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
691 | cxstring astr = CX_STR("aaaaaaaaaa"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
692 | 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
|
693 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
694 | 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
|
695 | const char *expected = "test muchlongerab string aba"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
696 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
697 | 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
|
698 | const char *expectedn = "test ccab string aba"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
699 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
700 | 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
|
701 | const char *longexpect = "xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
702 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
703 | 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
|
704 | const char *notrailexpect = "test zz"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
705 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
706 | 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
|
707 | const char *eqexpect = "hello"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
708 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
709 | 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
|
710 | 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
|
711 | const char *emptyexpect2 = "test ab string aba"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
712 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
713 | 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
|
714 | const char *preexpected = "TEST ababab string aba"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
715 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
716 | 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
|
717 | const char *an1expected = "xaaaaaaaaa"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
718 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
719 | 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
|
720 | const char *an4expected = "xxxxaaaaaa"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
721 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
722 | 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
|
723 | const char *an9expected = "xxxxxxxxxa"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
724 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
725 | 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
|
726 | const char *an10expected = "xxxxxxxxxx"; |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
727 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
728 | 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
|
729 | 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
|
730 | 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
|
731 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
732 | 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
|
733 | 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
|
734 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
735 | CX_TEST_ASSERT(repl.ptr != str.ptr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
736 | ASSERT_ZERO_TERMINATED(repl); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
737 | CX_TEST_ASSERT(0 == strcmp(repl.ptr, expected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
738 | ASSERT_ZERO_TERMINATED(repln); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
739 | CX_TEST_ASSERT(0 == strcmp(repln.ptr, expectedn)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
740 | ASSERT_ZERO_TERMINATED(longrepl); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
741 | CX_TEST_ASSERT(0 == strcmp(longrepl.ptr, longexpect)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
742 | ASSERT_ZERO_TERMINATED(replnotrail); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
743 | CX_TEST_ASSERT(0 == strcmp(replnotrail.ptr, notrailexpect)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
744 | ASSERT_ZERO_TERMINATED(repleq); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
745 | CX_TEST_ASSERT(0 == strcmp(repleq.ptr, eqexpect)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
746 | ASSERT_ZERO_TERMINATED(replempty1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
747 | CX_TEST_ASSERT(0 == strcmp(replempty1.ptr, "")); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
748 | ASSERT_ZERO_TERMINATED(replempty2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
749 | CX_TEST_ASSERT(0 == strcmp(replempty2.ptr, emptyexpect2)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
750 | ASSERT_ZERO_TERMINATED(replpre); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
751 | CX_TEST_ASSERT(0 == strcmp(replpre.ptr, preexpected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
752 | ASSERT_ZERO_TERMINATED(replan1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
753 | CX_TEST_ASSERT(0 == strcmp(replan1.ptr, an1expected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
754 | ASSERT_ZERO_TERMINATED(replan4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
755 | CX_TEST_ASSERT(0 == strcmp(replan4.ptr, an4expected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
756 | ASSERT_ZERO_TERMINATED(replan9); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
757 | CX_TEST_ASSERT(0 == strcmp(replan9.ptr, an9expected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
758 | ASSERT_ZERO_TERMINATED(replan10); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
759 | CX_TEST_ASSERT(0 == strcmp(replan10.ptr, an10expected)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
760 | ASSERT_ZERO_TERMINATED(repl1_a); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
761 | 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
|
762 | ASSERT_ZERO_TERMINATED(repl2_a); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
763 | CX_TEST_ASSERT(0 == strcmp(repl2_a.ptr, expected2_a)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
764 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
765 | cx_strfree_a(alloc, &repl1_a); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
766 | cx_strfree_a(alloc, &repl2_a); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
767 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
768 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
769 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
770 | cx_strfree(&repl); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
771 | cx_strfree(&repln); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
772 | cx_strfree(&longrepl); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
773 | cx_strfree(&replnotrail); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
774 | cx_strfree(&repleq); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
775 | cx_strfree(&replempty1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
776 | cx_strfree(&replempty2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
777 | cx_strfree(&replpre); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
778 | cx_strfree(&replan1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
779 | cx_strfree(&replan4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
780 | cx_strfree(&replan9); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
781 | cx_strfree(&replan10); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
782 | cx_testing_allocator_destroy(&talloc); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
783 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
784 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
785 | CX_TEST(test_strtok) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
786 | cxstring str = CX_STR("a,comma,separated,string"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
787 | cxstring delim = CX_STR(","); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
788 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
789 | CxStrtokCtx ctx = cx_strtok(str, delim, 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
790 | CX_TEST_ASSERT(ctx.str.ptr == str.ptr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
791 | CX_TEST_ASSERT(ctx.str.length == str.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
792 | CX_TEST_ASSERT(ctx.delim.ptr == delim.ptr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
793 | CX_TEST_ASSERT(ctx.delim.length == delim.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
794 | CX_TEST_ASSERT(ctx.limit == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
795 | CX_TEST_ASSERT(ctx.found == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
796 | CX_TEST_ASSERT(ctx.pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
797 | CX_TEST_ASSERT(ctx.next_pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
798 | CX_TEST_ASSERT(ctx.delim_more == NULL); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
799 | CX_TEST_ASSERT(ctx.delim_more_count == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
800 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
801 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
802 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
803 | CX_TEST(test_strtok_delim) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
804 | cxstring str = CX_STR("an,arbitrarily|separated;string"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
805 | cxstring delim = CX_STR(","); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
806 | cxstring delim_more[2] = {CX_STR("|"), CX_STR(";")}; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
807 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
808 | CxStrtokCtx ctx = cx_strtok(str, delim, 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
809 | cx_strtok_delim(&ctx, delim_more, 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
810 | CX_TEST_ASSERT(ctx.str.ptr == str.ptr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
811 | CX_TEST_ASSERT(ctx.str.length == str.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
812 | CX_TEST_ASSERT(ctx.delim.ptr == delim.ptr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
813 | CX_TEST_ASSERT(ctx.delim.length == delim.length); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
814 | CX_TEST_ASSERT(ctx.limit == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
815 | CX_TEST_ASSERT(ctx.found == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
816 | CX_TEST_ASSERT(ctx.pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
817 | CX_TEST_ASSERT(ctx.next_pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
818 | CX_TEST_ASSERT(ctx.delim_more == delim_more); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
819 | CX_TEST_ASSERT(ctx.delim_more_count == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
820 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
821 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
822 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
823 | CX_TEST(test_strtok_next_easy) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
824 | cxstring str = CX_STR("a,comma,separated,string"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
825 | cxstring delim = CX_STR(","); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
826 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
827 | CxStrtokCtx ctx = cx_strtok(str, delim, 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
828 | bool ret; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
829 | cxstring tok; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
830 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
831 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
832 | 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
|
833 | 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
|
834 | CX_TEST_ASSERT(ctx.pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
835 | CX_TEST_ASSERT(ctx.next_pos == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
836 | CX_TEST_ASSERT(ctx.delim_pos == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
837 | CX_TEST_ASSERT(ctx.found == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
838 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
839 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
840 | 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
|
841 | 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
|
842 | CX_TEST_ASSERT(ctx.pos == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
843 | CX_TEST_ASSERT(ctx.next_pos == 8); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
844 | CX_TEST_ASSERT(ctx.delim_pos == 7); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
845 | CX_TEST_ASSERT(ctx.found == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
846 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
847 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
848 | 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
|
849 | 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
|
850 | CX_TEST_ASSERT(ctx.pos == 8); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
851 | CX_TEST_ASSERT(ctx.next_pos == 18); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
852 | CX_TEST_ASSERT(ctx.delim_pos == 17); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
853 | CX_TEST_ASSERT(ctx.found == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
854 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
855 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
856 | CX_TEST_ASSERT(!ret); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
857 | CX_TEST_ASSERT(ctx.pos == 8); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
858 | CX_TEST_ASSERT(ctx.next_pos == 18); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
859 | CX_TEST_ASSERT(ctx.delim_pos == 17); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
860 | CX_TEST_ASSERT(ctx.found == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
861 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
862 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
863 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
864 | CX_TEST(test_strtok_next_unlimited) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
865 | cxstring str = CX_STR("some;-;otherwise;-;separated;-;string;-;"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
866 | cxstring delim = CX_STR(";-;"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
867 | CX_TEST_DO { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
868 | CxStrtokCtx ctx = cx_strtok(str, delim, SIZE_MAX); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
869 | bool ret; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
870 | cxstring tok; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
871 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
872 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
873 | 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
|
874 | 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
|
875 | CX_TEST_ASSERT(ctx.pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
876 | CX_TEST_ASSERT(ctx.next_pos == 7); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
877 | CX_TEST_ASSERT(ctx.delim_pos == 4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
878 | CX_TEST_ASSERT(ctx.found == 1); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
879 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
880 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
881 | 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
|
882 | 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
|
883 | CX_TEST_ASSERT(ctx.pos == 7); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
884 | CX_TEST_ASSERT(ctx.next_pos == 19); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
885 | CX_TEST_ASSERT(ctx.delim_pos == 16); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
886 | CX_TEST_ASSERT(ctx.found == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
887 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
888 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
889 | 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
|
890 | 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
|
891 | CX_TEST_ASSERT(ctx.pos == 19); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
892 | CX_TEST_ASSERT(ctx.next_pos == 31); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
893 | CX_TEST_ASSERT(ctx.delim_pos == 28); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
894 | CX_TEST_ASSERT(ctx.found == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
895 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
896 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
897 | 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
|
898 | 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
|
899 | CX_TEST_ASSERT(ctx.pos == 31); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
900 | CX_TEST_ASSERT(ctx.next_pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
901 | CX_TEST_ASSERT(ctx.delim_pos == 37); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
902 | CX_TEST_ASSERT(ctx.found == 4); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
903 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
904 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
905 | 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
|
906 | 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
|
907 | CX_TEST_ASSERT(ctx.pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
908 | CX_TEST_ASSERT(ctx.next_pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
909 | CX_TEST_ASSERT(ctx.delim_pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
910 | CX_TEST_ASSERT(ctx.found == 5); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
911 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
912 | ret = cx_strtok_next(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
913 | CX_TEST_ASSERT(!ret); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
914 | CX_TEST_ASSERT(ctx.pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
915 | CX_TEST_ASSERT(ctx.delim_pos == 40); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
916 | CX_TEST_ASSERT(ctx.found == 5); |
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 | |
1176
247db6e629ad
remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
920 | 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
|
921 | 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
|
922 | 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
|
923 | string.ptr[i] += 'A' - 'a'; |
247db6e629ad
remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
924 | } |
247db6e629ad
remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
925 | } |
247db6e629ad
remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
926 | } |
247db6e629ad
remove cx_strupper() and cx_strlower() - fixes #591
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
927 | |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
928 | 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
|
929 | 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
|
930 | cxstring delim = CX_STR(","); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
931 | cxstring delim_more[2] = {CX_STR("||"), CX_STR(";")}; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
932 | CX_TEST_DO { |
1127
1fd31909a3f8
removes some unnecessary string functions - fixes #561
Mike Becker <universe@uap-core.de>
parents:
1126
diff
changeset
|
933 | CxStrtokCtx ctx = cx_strtok(str, delim, 10); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
934 | cx_strtok_delim(&ctx, delim_more, 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
935 | bool ret; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
936 | cxmutstr tok; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
937 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
938 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
939 | 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
|
940 | 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
|
941 | CX_TEST_ASSERT(ctx.pos == 0); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
942 | CX_TEST_ASSERT(ctx.next_pos == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
943 | CX_TEST_ASSERT(ctx.delim_pos == 2); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
944 | 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
|
945 | test_toupper(tok); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
946 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
947 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
948 | 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
|
949 | 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
|
950 | CX_TEST_ASSERT(ctx.pos == 3); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
951 | CX_TEST_ASSERT(ctx.next_pos == 15); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
952 | CX_TEST_ASSERT(ctx.delim_pos == 14); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
953 | 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
|
954 | test_toupper(tok); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
955 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
956 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
957 | 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
|
958 | 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
|
959 | CX_TEST_ASSERT(ctx.pos == 15); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
960 | CX_TEST_ASSERT(ctx.next_pos == 17); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
961 | CX_TEST_ASSERT(ctx.delim_pos == 15); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
962 | 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
|
963 | test_toupper(tok); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
964 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
965 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
966 | 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
|
967 | 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
|
968 | CX_TEST_ASSERT(ctx.pos == 17); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
969 | CX_TEST_ASSERT(ctx.next_pos == 27); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
970 | CX_TEST_ASSERT(ctx.delim_pos == 26); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
971 | 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
|
972 | test_toupper(tok); |
777
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 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
975 | 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
|
976 | 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
|
977 | CX_TEST_ASSERT(ctx.pos == 27); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
978 | CX_TEST_ASSERT(ctx.next_pos == 33); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
979 | CX_TEST_ASSERT(ctx.delim_pos == 33); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
980 | 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
|
981 | test_toupper(tok); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
982 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
983 | ret = cx_strtok_next_m(&ctx, &tok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
984 | CX_TEST_ASSERT(!ret); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
985 | CX_TEST_ASSERT(ctx.pos == 27); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
986 | CX_TEST_ASSERT(ctx.next_pos == 33); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
987 | CX_TEST_ASSERT(ctx.delim_pos == 33); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
988 | CX_TEST_ASSERT(ctx.found == 5); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
989 | |
1126
20c9212b3a47
fix mistake string test: CX_STR should be used for initializers only
Mike Becker <universe@uap-core.de>
parents:
1071
diff
changeset
|
990 | 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
|
991 | } |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
992 | cx_strfree(&str); |
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 | |
1052
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
995 | #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
|
996 | do { \ |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
997 | errno = 0; \ |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
998 | 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
|
999 | 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
|
1000 | 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
|
1001 | 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
|
1002 | 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
|
1003 | } else { \ |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1004 | 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
|
1005 | 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
|
1006 | } \ |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1007 | } while (0) |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1008 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1009 | #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
|
1010 | 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
|
1011 | 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
|
1012 | 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
|
1013 | 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
|
1014 | 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
|
1015 | 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
|
1016 | 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
|
1017 | 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
|
1018 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1019 | #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
|
1020 | 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
|
1021 | 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
|
1022 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1023 | #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
|
1024 | 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
|
1025 | 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
|
1026 | 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
|
1027 | 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
|
1028 | 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
|
1029 | 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
|
1030 | 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
|
1031 | 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
|
1032 | 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
|
1033 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1034 | 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
|
1035 | short s; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1036 | int i; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1037 | long l; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1038 | 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
|
1039 | 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
|
1040 | 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
|
1041 | 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
|
1042 | 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
|
1043 | 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
|
1044 | // 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
|
1045 | 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
|
1046 | 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
|
1047 | 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
|
1048 | 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
|
1049 | 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
|
1050 | 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
|
1051 | 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
|
1052 | 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
|
1053 | 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
|
1054 | 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
|
1055 | 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
|
1056 | 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
|
1057 | 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
|
1058 | 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
|
1059 | 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
|
1060 | 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
|
1061 | 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
|
1062 | 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
|
1063 | 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
|
1064 | 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
|
1065 | 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
|
1066 | 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
|
1067 | test_strtoint_rollout_signed(0x6df9CE03AbC90815, 16); |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1068 | // TODO: roll out base 2 tests, but that needs C23 |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1069 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1070 | // do some special case tests |
1061
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1071 | // -------------------------- |
1052
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1072 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1073 | // 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
|
1074 | errno = 0; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1075 | 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
|
1076 | 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
|
1077 | |
1061
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1078 | // edge case: only the sign bit is set |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1079 | errno = 0; |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1080 | 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
|
1081 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1082 | errno = 0; |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1083 | 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
|
1084 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1085 | CX_TEST_ASSERT(i16 == INT16_MIN); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1086 | errno = 0; |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1087 | 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
|
1088 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1089 | errno = 0; |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1090 | 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
|
1091 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1092 | CX_TEST_ASSERT(i64 == INT64_MIN); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1093 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1094 | // group separators |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1095 | 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
|
1096 | CX_TEST_ASSERT(i32 == -123456); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1097 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1098 | 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
|
1099 | CX_TEST_ASSERT(errno == EINVAL); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1100 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1101 | 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
|
1102 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1103 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1104 | 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
|
1105 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1106 | CX_TEST_ASSERT(i16 == -0x6789); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1107 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1108 | // binary and (unusual notation of) signed binary |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1109 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1110 | 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
|
1111 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1112 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1113 | 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
|
1114 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1115 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1116 | 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
|
1117 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1118 | 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
|
1119 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1120 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1121 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1122 | 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
|
1123 | 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
|
1124 | 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
|
1125 | 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
|
1126 | 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
|
1127 | 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
|
1128 | 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
|
1129 | 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
|
1130 | uint64_t u64; |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1155
diff
changeset
|
1131 | 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
|
1132 | 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
|
1133 | // do some brute force tests with all ranges |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1134 | 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
|
1135 | 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
|
1136 | 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
|
1137 | 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
|
1138 | 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
|
1139 | 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
|
1140 | test_strtoint_rollout(473350266537, 10); |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1141 | 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
|
1142 | 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
|
1143 | 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
|
1144 | 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
|
1145 | 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
|
1146 | 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
|
1147 | 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
|
1148 | test_strtoint_rollout(01767716340165362204025, 8); |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1149 | 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
|
1150 | 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
|
1151 | 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
|
1152 | 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
|
1153 | 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
|
1154 | 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
|
1155 | 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
|
1156 | test_strtoint_rollout(0xfdf9CE03AbC90815, 16); |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1157 | // TODO: roll out base 2 tests, but that needs C23 |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1158 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1159 | // do some special case tests |
1061
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1160 | // -------------------------- |
1052
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1161 | |
1184
34d60b1664f2
add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents:
1176
diff
changeset
|
1162 | // leading plus |
34d60b1664f2
add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents:
1176
diff
changeset
|
1163 | 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
|
1164 | CX_TEST_ASSERT(u32 == 5); |
34d60b1664f2
add another case to str_to_number tests
Mike Becker <universe@uap-core.de>
parents:
1176
diff
changeset
|
1165 | |
1061
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1166 | // group separators |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1167 | 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
|
1168 | CX_TEST_ASSERT(u32 == 123456); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1169 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1170 | 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
|
1171 | CX_TEST_ASSERT(errno == EINVAL); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1172 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1173 | 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
|
1174 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1175 | CX_TEST_ASSERT(u16 == 0xabcd); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1176 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1177 | // binary |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1178 | errno = 0; |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1179 | 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
|
1180 | CX_TEST_ASSERT(errno == ERANGE); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1181 | errno = 0; |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1182 | 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
|
1183 | CX_TEST_ASSERT(errno == 0); |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1184 | CX_TEST_ASSERT(u8 == 0xAB); |
1052
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1185 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1186 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1187 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1188 | 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
|
1189 | float f; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1190 | 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
|
1191 | 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
|
1192 | 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
|
1193 | |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1194 | 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
|
1195 | 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
|
1196 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1197 | 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
|
1198 | 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
|
1199 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1200 | 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
|
1201 | 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
|
1202 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1203 | 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
|
1204 | 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
|
1205 | |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1206 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1207 | 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
|
1208 | CX_TEST_ASSERT(errno == EINVAL); |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1209 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1210 | 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
|
1211 | CX_TEST_ASSERT(errno == EINVAL); |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1212 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1213 | 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
|
1214 | CX_TEST_ASSERT(errno == EINVAL); |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1215 | 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
|
1216 | 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
|
1217 | |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1218 | 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
|
1219 | 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
|
1220 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1221 | 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
|
1222 | CX_TEST_ASSERT(errno == ERANGE); |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1223 | 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
|
1224 | 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
|
1225 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1226 | 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
|
1227 | CX_TEST_ASSERT(errno == ERANGE); |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1228 | 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
|
1229 | 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
|
1230 | errno = 0; |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1231 | 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
|
1232 | 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
|
1233 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1234 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1235 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1236 | 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
|
1237 | double d; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1238 | 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
|
1239 | 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
|
1240 | 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
|
1241 | |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1242 | 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
|
1243 | 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
|
1244 | |
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1245 | 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
|
1246 | 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
|
1247 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1248 | 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
|
1249 | 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
|
1250 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1251 | 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
|
1252 | 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
|
1253 | |
c7d23892eab5
implement string to integer conversions
Mike Becker <universe@uap-core.de>
parents:
1052
diff
changeset
|
1254 | 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
|
1255 | 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
|
1256 | |
1063
e453e717876e
implement floating point string to number conversions
Mike Becker <universe@uap-core.de>
parents:
1061
diff
changeset
|
1257 | // 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
|
1258 | } |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1259 | } |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1260 | |
1155
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1261 | 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
|
1262 | long long i; |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1263 | unsigned long long u; |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1264 | float f; |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1265 | double d; |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1266 | CX_TEST_DO { |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1267 | 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
|
1268 | 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
|
1269 | 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
|
1270 | CX_TEST_ASSERT(i == -42); |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1271 | |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1272 | 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
|
1273 | 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
|
1274 | 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
|
1275 | CX_TEST_ASSERT(u == 42); |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1276 | |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1277 | 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
|
1278 | 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
|
1279 | 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
|
1280 | 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
|
1281 | |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1282 | 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
|
1283 | 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
|
1284 | 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
|
1285 | 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
|
1286 | } |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1287 | } |
b77d56a27e9c
do not trim strings before conversion to number
Mike Becker <universe@uap-core.de>
parents:
1127
diff
changeset
|
1288 | |
1297
0811fb9a8dba
bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents:
1184
diff
changeset
|
1289 | 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
|
1290 | 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
|
1291 | CX_TEST_DO { |
0811fb9a8dba
bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents:
1184
diff
changeset
|
1292 | char actual[64]; |
0811fb9a8dba
bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents:
1184
diff
changeset
|
1293 | 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
|
1294 | 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
|
1295 | } |
0811fb9a8dba
bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents:
1184
diff
changeset
|
1296 | } |
0811fb9a8dba
bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents:
1184
diff
changeset
|
1297 | |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1298 | CxTestSuite *cx_test_suite_string(void) { |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1299 | CxTestSuite *suite = cx_test_suite_new("string"); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1300 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1301 | cx_test_register(suite, test_string_construct); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1302 | cx_test_register(suite, test_strfree); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1303 | cx_test_register(suite, test_strdup); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1304 | 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
|
1305 | cx_test_register(suite, test_strcpy); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1306 | cx_test_register(suite, test_strlen); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1307 | cx_test_register(suite, test_strsubs); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1308 | cx_test_register(suite, test_strchr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1309 | cx_test_register(suite, test_strrchr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1310 | cx_test_register(suite, test_strstr); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1311 | cx_test_register(suite, test_strcmp); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1312 | cx_test_register(suite, test_strcasecmp); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1313 | 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
|
1314 | 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
|
1315 | cx_test_register(suite, test_strsplit); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1316 | cx_test_register(suite, test_strsplit_a); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1317 | cx_test_register(suite, test_strtrim); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1318 | cx_test_register(suite, test_strprefix); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1319 | cx_test_register(suite, test_strsuffix); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1320 | cx_test_register(suite, test_strcaseprefix); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1321 | cx_test_register(suite, test_strcasesuffix); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1322 | cx_test_register(suite, test_strreplace); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1323 | cx_test_register(suite, test_strtok); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1324 | cx_test_register(suite, test_strtok_delim); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1325 | cx_test_register(suite, test_strtok_next_easy); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1326 | cx_test_register(suite, test_strtok_next_unlimited); |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1327 | 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
|
1328 | cx_test_register(suite, test_strformat); |
777
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1329 | |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1330 | return suite; |
e5b29e6f0615
migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1331 | } |
1052
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1332 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1333 | 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
|
1334 | 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
|
1335 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1336 | 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
|
1337 | 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
|
1338 | 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
|
1339 | 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
|
1340 | 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
|
1341 | |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1342 | return suite; |
e997862a57d8
add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents:
1003
diff
changeset
|
1343 | } |