Tue, 04 Oct 2022 19:25:07 +0200
fix over-optimization of strstr
1. it's actually less performant to frequently read bytes
from an array instead of using the native word length
2. the SBO buffer should be local and not static to allow
multi-threading usage
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
0f3c9662f9b5
add tests and missing implementations for strings
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 |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
29 | #include "cx/string.h" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
30 | #include "util_allocator.h" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
31 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
32 | #include <gtest/gtest.h> |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
33 | |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
34 | #define EXPECT_ZERO_TERMINATED(str) EXPECT_EQ((str).ptr[(str).length], '\0') |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
35 | |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | TEST(String, construct) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | cxstring s1 = cx_str("1234"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | cxstring s2 = cx_strn("abcd", 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
39 | cxmutstr s3 = cx_mutstr((char *) "1234"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | cxmutstr s4 = cx_mutstrn((char *) "abcd", 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
42 | EXPECT_EQ(s1.length, 4); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
43 | EXPECT_EQ(s2.length, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
44 | EXPECT_EQ(s3.length, 4); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
45 | EXPECT_EQ(s4.length, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
46 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | TEST(String, strfree) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
49 | CxTestingAllocator alloc; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
50 | auto test = (char *) cxMalloc(&alloc, 16); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
51 | cxmutstr str = cx_mutstrn(test, 16); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
52 | ASSERT_EQ(str.ptr, test); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
53 | EXPECT_EQ(str.length, 16); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
54 | cx_strfree_a(&alloc, &str); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | EXPECT_EQ(str.ptr, nullptr); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
56 | EXPECT_EQ(str.length, 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | EXPECT_TRUE(alloc.verify()); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
58 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
60 | TEST(String, strdup) { |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
61 | cxstring str = CX_STR("test"); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
62 | cxmutstr dup = cx_strdup(str); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
63 | ASSERT_EQ(dup.length, str.length); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
64 | EXPECT_STREQ(dup.ptr, str.ptr); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
65 | EXPECT_ZERO_TERMINATED(dup); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
66 | cx_strfree(&dup); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
67 | |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
68 | str.length = 2; |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
69 | dup = cx_strdup(str); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
70 | ASSERT_EQ(dup.length, str.length); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
71 | EXPECT_STREQ(dup.ptr, "te"); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
72 | EXPECT_ZERO_TERMINATED(dup); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
73 | cx_strfree(&dup); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
74 | } |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
75 | |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
76 | TEST(String, strlen) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | cxstring s1 = CX_STR("1234"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | cxstring s2 = CX_STR(".:.:."); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | cxstring s3 = CX_STR("X"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
80 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
81 | size_t len0 = cx_strlen(0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
82 | size_t len1 = cx_strlen(1, s1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
83 | size_t len2 = cx_strlen(2, s1, s2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
84 | size_t len3 = cx_strlen(3, s1, s2, s3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
85 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
86 | EXPECT_EQ(len0, 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
87 | EXPECT_EQ(len1, 4); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
88 | EXPECT_EQ(len2, 9); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
89 | EXPECT_EQ(len3, 10); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
90 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
92 | TEST(String, strsubs) { |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
93 | cxstring str = CX_STR("A test string"); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
94 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
95 | cxstring sub = cx_strsubs(str, 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
96 | EXPECT_EQ(cx_strcmp(sub, str), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
97 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
98 | sub = cx_strsubs(str, 2); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
99 | EXPECT_EQ(cx_strcmp(sub, cx_str("test string")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
100 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
101 | sub = cx_strsubs(str, 7); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
102 | EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
103 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
104 | sub = cx_strsubs(str, 15); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
105 | EXPECT_EQ(cx_strcmp(sub, cx_str("")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
106 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
107 | sub = cx_strsubsl(str, 2, 4); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
108 | EXPECT_EQ(cx_strcmp(sub, cx_str("test")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
109 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
110 | sub = cx_strsubsl(str, 7, 3); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
111 | EXPECT_EQ(cx_strcmp(sub, cx_str("str")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
112 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
113 | sub = cx_strsubsl(str, 7, 20); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
114 | EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
115 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
116 | // just for coverage, call the _m variant |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
117 | auto m = cx_strsubs_m(cx_mutstrn(nullptr, 0), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
118 | EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
119 | } |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
120 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
121 | TEST(String, strchr) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
122 | cxstring str = CX_STR("I will find you - and I will kill you"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
123 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
124 | cxstring notfound = cx_strchr(str, 'x'); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
125 | EXPECT_EQ(notfound.length, 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
126 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
127 | cxstring result = cx_strchr(str, 'w'); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
128 | EXPECT_EQ(result.length, 35); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
129 | EXPECT_STREQ(result.ptr, "will find you - and I will kill you"); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
130 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
131 | // just for coverage, call the _m variant |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
132 | auto m = cx_strchr_m(cx_mutstrn(nullptr, 0), 'a'); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
133 | EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
134 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
135 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
136 | TEST(String, strrchr) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
137 | cxstring str = CX_STR("I will find you - and I will kill you"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
138 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
139 | cxstring notfound = cx_strrchr(str, 'x'); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
140 | EXPECT_EQ(notfound.length, 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
141 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
142 | cxstring result = cx_strrchr(str, 'w'); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
143 | EXPECT_EQ(result.length, 13); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
144 | EXPECT_STREQ(result.ptr, "will kill you"); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
145 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
146 | // just for coverage, call the _m variant |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
147 | auto m = cx_strrchr_m(cx_mutstrn(nullptr, 0), 'a'); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
148 | EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
149 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
150 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
151 | TEST(String, strstr) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
152 | cxstring str = CX_STR("find the match in this string"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
153 | cxstring longstr = CX_STR( |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
154 | "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | "mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
156 | "yzabcdeababababnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
157 | "klmnopqrstuvwxyzaababababababababrstuvwxyzabcdefghijklmnopqrstuv" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
158 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
159 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
160 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
161 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
162 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
163 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
164 | "wxyz1234567890"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
165 | cxstring longstrpattern = CX_STR( |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
166 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
167 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
168 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
169 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
170 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
171 | ); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
172 | cxstring longstrresult = CX_STR( |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
173 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
174 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
175 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
176 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
177 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
178 | "abababababababababababababababababababababababababababababababab" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
179 | "wxyz1234567890" |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
180 | ); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
181 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
182 | cxstring notfound = cx_strstr(str, cx_str("no match")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
183 | EXPECT_EQ(notfound.length, 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
184 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
185 | cxstring result = cx_strstr(str, cx_str("match")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
186 | EXPECT_EQ(result.length, 20); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
187 | EXPECT_STREQ(result.ptr, "match in this string"); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
188 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
189 | result = cx_strstr(str, cx_str("")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
190 | EXPECT_EQ(result.length, str.length); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
191 | EXPECT_STREQ(result.ptr, str.ptr); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
192 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
193 | result = cx_strstr(longstr, longstrpattern); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
194 | EXPECT_EQ(result.length, longstrresult.length); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
195 | EXPECT_STREQ(result.ptr, longstrresult.ptr); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
196 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
197 | // just for coverage, call the _m variant |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
198 | auto mstr = cx_strdup(longstr); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
199 | auto m = cx_strstr_m(mstr, longstrpattern); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
200 | EXPECT_EQ(m.length, longstrresult.length); |
587
3dd55e246d2d
use EXPECT_STREQ instead of strcmp
Mike Becker <universe@uap-core.de>
parents:
586
diff
changeset
|
201 | EXPECT_STREQ(m.ptr, longstrresult.ptr); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
202 | cx_strfree(&mstr); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
203 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
204 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
205 | TEST(String, strcmp) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
206 | cxstring str = CX_STR("compare this"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
207 | |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
208 | EXPECT_EQ(cx_strcmp(cx_str(""), cx_str("")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
209 | EXPECT_GT(cx_strcmp(str, cx_str("")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
210 | EXPECT_EQ(cx_strcmp(str, cx_str("compare this")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
211 | EXPECT_NE(cx_strcmp(str, cx_str("Compare This")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
212 | EXPECT_LT(cx_strcmp(str, cx_str("compare tool")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
213 | EXPECT_GT(cx_strcmp(str, cx_str("compare shit")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
214 | EXPECT_LT(cx_strcmp(str, cx_str("compare this not")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
215 | EXPECT_GT(cx_strcmp(str, cx_str("compare")), 0); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
216 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
217 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
218 | TEST(String, strcasecmp) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
219 | cxstring str = CX_STR("compare this"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
220 | |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
221 | EXPECT_EQ(cx_strcasecmp(cx_str(""), cx_str("")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
222 | EXPECT_GT(cx_strcasecmp(str, cx_str("")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
223 | EXPECT_EQ(cx_strcasecmp(str, cx_str("compare this")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
224 | EXPECT_EQ(cx_strcasecmp(str, cx_str("Compare This")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
225 | EXPECT_LT(cx_strcasecmp(str, cx_str("compare tool")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
226 | EXPECT_GT(cx_strcasecmp(str, cx_str("compare shit")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
227 | EXPECT_LT(cx_strcasecmp(str, cx_str("compare this not")), 0); |
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
228 | EXPECT_GT(cx_strcasecmp(str, cx_str("compare")), 0); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
229 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
230 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
231 | TEST(String, strcat) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
232 | cxstring s1 = CX_STR("12"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
233 | cxstring s2 = CX_STR("34"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
234 | cxstring s3 = CX_STR("56"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
235 | cxstring sn = {nullptr, 0}; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
236 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
237 | CxTestingAllocator alloc; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
238 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
239 | cxmutstr t1 = cx_strcat_a(&alloc, 2, s1, s2); |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
240 | EXPECT_EQ(cx_strcmp(cx_strcast(t1), cx_str("1234")), 0); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
241 | EXPECT_ZERO_TERMINATED(t1); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | cx_strfree_a(&alloc, &t1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
243 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
244 | cxmutstr t2 = cx_strcat_a(&alloc, 3, s1, s2, s3); |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
245 | EXPECT_EQ(cx_strcmp(cx_strcast(t2), cx_str("123456")), 0); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
246 | EXPECT_ZERO_TERMINATED(t2); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
247 | cx_strfree_a(&alloc, &t2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
248 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
249 | cxmutstr t3 = cx_strcat_a(&alloc, 6, s1, sn, s2, sn, s3, sn); |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
250 | EXPECT_EQ(cx_strcmp(cx_strcast(t3), cx_str("123456")), 0); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
251 | EXPECT_ZERO_TERMINATED(t3); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
252 | cx_strfree_a(&alloc, &t3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
253 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
254 | cxmutstr t4 = cx_strcat_a(&alloc, 2, sn, sn); |
588
6a3cd8f0a2cf
do not use c++ object initialization
Mike Becker <universe@uap-core.de>
parents:
587
diff
changeset
|
255 | EXPECT_EQ(cx_strcmp(cx_strcast(t4), cx_str("")), 0); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
256 | EXPECT_ZERO_TERMINATED(t4); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
257 | cx_strfree_a(&alloc, &t4); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
258 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
259 | EXPECT_TRUE(alloc.verify()); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
260 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
261 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
262 | TEST(String, strsplit) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
263 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
264 | cxstring test = cx_str("this,is,a,csv,string"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
265 | size_t capa = 8; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
266 | cxstring list[8]; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
267 | size_t n; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
268 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | /* special case: empty string */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
270 | n = cx_strsplit(test, cx_str(""), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
271 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
272 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
273 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
274 | /* no delimiter occurrence */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
275 | n = cx_strsplit(test, cx_str("z"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
276 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
277 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
278 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
279 | /* partially matching delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
280 | n = cx_strsplit(test, cx_str("is,not"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
281 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
282 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
283 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
284 | /* matching single-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
285 | n = cx_strsplit(test, cx_str(","), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
286 | ASSERT_EQ(n, 5); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
287 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
288 | EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
289 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
290 | EXPECT_EQ(cx_strcmp(list[3], cx_str("csv")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
291 | EXPECT_EQ(cx_strcmp(list[4], cx_str("string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
292 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
293 | /* matching multi-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
294 | n = cx_strsplit(test, cx_str("is"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
295 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
296 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
297 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
298 | EXPECT_EQ(cx_strcmp(list[2], cx_str(",a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
299 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
300 | /* bounded list using single-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
301 | n = cx_strsplit(test, cx_str(","), 3, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
302 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
303 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
304 | EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
305 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
306 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
307 | /* bounded list using multi-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
308 | n = cx_strsplit(test, cx_str("is"), 2, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
309 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
310 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
311 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
312 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
313 | /* start with delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
314 | n = cx_strsplit(test, cx_str("this"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
315 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
316 | EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
317 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
318 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
319 | /* end with delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
320 | n = cx_strsplit(test, cx_str("string"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
321 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
322 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this,is,a,csv,")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
323 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
324 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
325 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
326 | /* end with delimiter exceed bound */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
327 | n = cx_strsplit(cx_str("a,b,c,"), cx_str(","), 3, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
328 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
329 | EXPECT_EQ(cx_strcmp(list[0], cx_str("a")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
330 | EXPECT_EQ(cx_strcmp(list[1], cx_str("b")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
331 | EXPECT_EQ(cx_strcmp(list[2], cx_str("c,")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
332 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
333 | /* exact match */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
334 | n = cx_strsplit(test, cx_str("this,is,a,csv,string"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
335 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
336 | EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
337 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
338 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
339 | /* string to be split is only substring */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
340 | n = cx_strsplit(test, cx_str("this,is,a,csv,string,with,extension"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
341 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
342 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
343 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
344 | /* subsequent encounter of delimiter (the string between is empty) */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
345 | n = cx_strsplit(test, cx_str("is,"), capa, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
346 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
347 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
348 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
349 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
350 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
351 | /* call the _m variant just for coverage */ |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
352 | auto mtest = cx_strdup(test); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
353 | cxmutstr mlist[4]; |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
354 | n = cx_strsplit_m(mtest, cx_str("is,"), 4, mlist); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
355 | ASSERT_EQ(n, 3); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
356 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
357 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
358 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
359 | cx_strfree(&mtest); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
360 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
361 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
362 | TEST(String, strsplit_a) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
363 | CxTestingAllocator alloc; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
364 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
365 | cxstring test = cx_str("this,is,a,csv,string"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
366 | size_t capa = 8; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
367 | cxstring *list; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
368 | size_t n; |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
369 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
370 | /* special case: empty string */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
371 | n = cx_strsplit_a(&alloc, test, cx_str(""), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
372 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
373 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
374 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
375 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
376 | /* no delimiter occurrence */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
377 | n = cx_strsplit_a(&alloc, test, cx_str("z"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
378 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
379 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
380 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
381 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
382 | /* partially matching delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
383 | n = cx_strsplit_a(&alloc, test, cx_str("is,not"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
384 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
385 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
386 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
387 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
388 | /* matching single-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
389 | n = cx_strsplit_a(&alloc, test, cx_str(","), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
390 | ASSERT_EQ(n, 5); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
391 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
392 | EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
393 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
394 | EXPECT_EQ(cx_strcmp(list[3], cx_str("csv")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
395 | EXPECT_EQ(cx_strcmp(list[4], cx_str("string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
396 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
397 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
398 | /* matching multi-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
399 | n = cx_strsplit_a(&alloc, test, cx_str("is"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
400 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
401 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
402 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
403 | EXPECT_EQ(cx_strcmp(list[2], cx_str(",a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
404 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
405 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
406 | /* bounded list using single-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
407 | n = cx_strsplit_a(&alloc, test, cx_str(","), 3, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
408 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
409 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
410 | EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
411 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
412 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
413 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
414 | /* bounded list using multi-char delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
415 | n = cx_strsplit_a(&alloc, test, cx_str("is"), 2, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
416 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
417 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
418 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
419 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
420 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
421 | /* start with delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
422 | n = cx_strsplit_a(&alloc, test, cx_str("this"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
423 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
424 | EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
425 | EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
426 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
427 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
428 | /* end with delimiter */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
429 | n = cx_strsplit_a(&alloc, test, cx_str("string"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
430 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
431 | EXPECT_EQ(cx_strcmp(list[0], cx_str("this,is,a,csv,")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
432 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
433 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
434 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
435 | /* end with delimiter exceed bound */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
436 | n = cx_strsplit_a(&alloc, cx_str("a,b,c,"), cx_str(","), 3, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
437 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
438 | EXPECT_EQ(cx_strcmp(list[0], cx_str("a")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
439 | EXPECT_EQ(cx_strcmp(list[1], cx_str("b")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
440 | EXPECT_EQ(cx_strcmp(list[2], cx_str("c,")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
441 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
442 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
443 | /* exact match */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
444 | n = cx_strsplit_a(&alloc, test, cx_str("this,is,a,csv,string"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
445 | ASSERT_EQ(n, 2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
446 | EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
447 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
448 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
449 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
450 | /* string to be split is only substring */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
451 | n = cx_strsplit_a(&alloc, test, cx_str("this,is,a,csv,string,with,extension"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
452 | ASSERT_EQ(n, 1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
453 | EXPECT_EQ(cx_strcmp(list[0], test), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
454 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
455 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
456 | /* subsequent encounter of delimiter (the string between is empty) */ |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
457 | n = cx_strsplit_a(&alloc, test, cx_str("is,"), capa, &list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
458 | ASSERT_EQ(n, 3); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
459 | EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
460 | EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
461 | EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
462 | cxFree(&alloc, list); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
463 | |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
464 | /* call the _m variant just for coverage */ |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
465 | auto mtest = cx_strdup(test); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
466 | cxmutstr *mlist; |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
467 | n = cx_strsplit_ma(&alloc, mtest, cx_str("is,"), 4, &mlist); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
468 | ASSERT_EQ(n, 3); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
469 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
470 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
471 | EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
472 | cxFree(&alloc, mlist); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
473 | cx_strfree(&mtest); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
474 | |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
475 | EXPECT_TRUE(alloc.verify()); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
476 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
477 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
478 | TEST(String, strtrim) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
479 | cxstring t1 = cx_strtrim(cx_str(" ein test \t ")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
480 | cxstring t2 = cx_strtrim(cx_str("abc")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
481 | cxstring t3 = cx_strtrim(cx_str(" 123")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
482 | cxstring t4 = cx_strtrim(cx_str("xyz ")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
483 | cxstring t5 = cx_strtrim(cx_str(" ")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
484 | cxstring empty = cx_strtrim(cx_str("")); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
485 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
486 | EXPECT_EQ(cx_strcmp(t1, cx_str("ein test")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
487 | EXPECT_EQ(cx_strcmp(t2, cx_str("abc")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
488 | EXPECT_EQ(cx_strcmp(t3, cx_str("123")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
489 | EXPECT_EQ(cx_strcmp(t4, cx_str("xyz")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
490 | EXPECT_EQ(cx_strcmp(t5, cx_str("")), 0); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
491 | EXPECT_EQ(cx_strcmp(empty, cx_str("")), 0); |
585
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
492 | |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
493 | /* call the _m variant just for coverage */ |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
494 | cxmutstr m1 = cx_strtrim_m(cx_mutstr((char *) " ein test \t ")); |
038f5e99e00f
add test coverage for _m variant functions
Mike Becker <universe@uap-core.de>
parents:
583
diff
changeset
|
495 | EXPECT_EQ(cx_strcmp(cx_strcast(m1), cx_str("ein test")), 0); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
496 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
497 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
498 | TEST(String, strprefix) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
499 | cxstring str = CX_STR("test my prefix and my suffix"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
500 | cxstring empty = CX_STR(""); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
501 | EXPECT_FALSE(cx_strprefix(empty, cx_str("pref"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
502 | EXPECT_TRUE(cx_strprefix(str, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
503 | EXPECT_TRUE(cx_strprefix(empty, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
504 | EXPECT_TRUE(cx_strprefix(str, cx_str("test "))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
505 | EXPECT_FALSE(cx_strprefix(str, cx_str("8-) fsck "))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
506 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
507 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
508 | TEST(String, strsuffix) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
509 | cxstring str = CX_STR("test my prefix and my suffix"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
510 | cxstring empty = CX_STR(""); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
511 | EXPECT_FALSE(cx_strsuffix(empty, cx_str("suf"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
512 | EXPECT_TRUE(cx_strsuffix(str, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
513 | EXPECT_TRUE(cx_strsuffix(empty, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
514 | EXPECT_TRUE(cx_strsuffix(str, cx_str("fix"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
515 | EXPECT_FALSE(cx_strsuffix(str, cx_str("fox"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
516 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
517 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
518 | TEST(String, strcaseprefix) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
519 | cxstring str = CX_STR("test my prefix and my suffix"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
520 | cxstring empty = CX_STR(""); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
521 | EXPECT_FALSE(cx_strcaseprefix(empty, cx_str("pREf"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
522 | EXPECT_TRUE(cx_strcaseprefix(str, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
523 | EXPECT_TRUE(cx_strcaseprefix(empty, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
524 | EXPECT_TRUE(cx_strcaseprefix(str, cx_str("TEST "))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
525 | EXPECT_FALSE(cx_strcaseprefix(str, cx_str("8-) fsck "))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
526 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
527 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
528 | TEST(String, strcasesuffix) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
529 | cxstring str = CX_STR("test my prefix and my suffix"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
530 | cxstring empty = CX_STR(""); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
531 | EXPECT_FALSE(cx_strcasesuffix(empty, cx_str("sUf"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
532 | EXPECT_TRUE(cx_strcasesuffix(str, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
533 | EXPECT_TRUE(cx_strcasesuffix(empty, empty)); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
534 | EXPECT_TRUE(cx_strcasesuffix(str, cx_str("FIX"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
535 | EXPECT_FALSE(cx_strcasesuffix(str, cx_str("fox"))); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
536 | } |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
537 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
538 | TEST(String, strreplace) { |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
539 | cxstring str = CX_STR("test ababab string aba"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
540 | cxstring longstr = CX_STR( |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
541 | "xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
542 | cxstring notrail = CX_STR("test abab"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
543 | cxstring empty = CX_STR(""); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
544 | cxstring astr = CX_STR("aaaaaaaaaa"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
545 | cxstring csstr = CX_STR("test AB ab TEST xyz"); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
546 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
547 | cxmutstr repl = cx_strreplace(str, cx_str("abab"), cx_str("muchlonger")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
548 | auto expected = "test muchlongerab string aba"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
549 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
550 | cxmutstr repln = cx_strreplacen(str, cx_str("ab"), cx_str("c"), 2); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
551 | auto expectedn = "test ccab string aba"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
552 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
553 | cxmutstr longrepl = cx_strreplace(longstr, cx_str("a"), cx_str("z")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
554 | auto longexpect = "xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
555 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
556 | cxmutstr replnotrail = cx_strreplace(notrail, cx_str("ab"), cx_str("z")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
557 | auto notrailexpect = "test zz"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
558 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
559 | cxmutstr repleq = cx_strreplace(str, str, cx_str("hello")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
560 | auto eqexpect = "hello"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
561 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
562 | cxmutstr replempty1 = cx_strreplace(empty, cx_str("ab"), cx_str("c")); // expect: empty |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
563 | cxmutstr replempty2 = cx_strreplace(str, cx_str("abab"), empty); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
564 | auto emptyexpect2 = "test ab string aba"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
565 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
566 | cxmutstr replpre = cx_strreplace(str, cx_str("test "), cx_str("TEST ")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
567 | auto preexpected = "TEST ababab string aba"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
568 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
569 | cxmutstr replan1 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 1); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
570 | auto an1expected = "xaaaaaaaaa"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
571 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
572 | cxmutstr replan4 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 4); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
573 | auto an4expected = "xxxxaaaaaa"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
574 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
575 | cxmutstr replan9 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 9); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
576 | auto an9expected = "xxxxxxxxxa"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
577 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
578 | cxmutstr replan10 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 10); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
579 | auto an10expected = "xxxxxxxxxx"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
580 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
581 | cxmutstr replcs1 = cx_strreplace(csstr, cx_str("AB"), cx_str("*")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
582 | auto cs1expected = "test * ab TEST xyz"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
583 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
584 | cxmutstr replcs2 = cx_strreplace(csstr, cx_str("test"), cx_str("TEST")); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
585 | auto cs2expected = "TEST AB ab TEST xyz"; |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
586 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
587 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
588 | EXPECT_NE(repl.ptr, str.ptr); |
589
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
589 | EXPECT_ZERO_TERMINATED(repl); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
590 | EXPECT_STREQ(repl.ptr, expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
591 | EXPECT_ZERO_TERMINATED(repln); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
592 | EXPECT_STREQ(repln.ptr, expectedn); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
593 | EXPECT_ZERO_TERMINATED(longrepl); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
594 | EXPECT_STREQ(longrepl.ptr, longexpect); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
595 | EXPECT_ZERO_TERMINATED(replnotrail); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
596 | EXPECT_STREQ(replnotrail.ptr, notrailexpect); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
597 | EXPECT_ZERO_TERMINATED(repleq); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
598 | EXPECT_STREQ(repleq.ptr, eqexpect); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
599 | EXPECT_ZERO_TERMINATED(replempty1); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
600 | EXPECT_STREQ(replempty1.ptr, ""); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
601 | EXPECT_ZERO_TERMINATED(replempty2); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
602 | EXPECT_STREQ(replempty2.ptr, emptyexpect2); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
603 | EXPECT_ZERO_TERMINATED(replpre); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
604 | EXPECT_STREQ(replpre.ptr, preexpected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
605 | EXPECT_ZERO_TERMINATED(replan1); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
606 | EXPECT_STREQ(replan1.ptr, an1expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
607 | EXPECT_ZERO_TERMINATED(replan4); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
608 | EXPECT_STREQ(replan4.ptr, an4expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
609 | EXPECT_ZERO_TERMINATED(replan9); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
610 | EXPECT_STREQ(replan9.ptr, an9expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
611 | EXPECT_ZERO_TERMINATED(replan10); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
612 | EXPECT_STREQ(replan10.ptr, an10expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
613 | EXPECT_ZERO_TERMINATED(replcs1); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
614 | EXPECT_STREQ(replcs1.ptr, cs1expected); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
615 | EXPECT_ZERO_TERMINATED(replcs2); |
c290f8fd979e
add zero-termination guarantees
Mike Becker <universe@uap-core.de>
parents:
588
diff
changeset
|
616 | EXPECT_STREQ(replcs2.ptr, cs2expected); |
583
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
617 | |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
618 | cx_strfree(&repl); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
619 | cx_strfree(&repln); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
620 | cx_strfree(&longrepl); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
621 | cx_strfree(&replnotrail); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
622 | cx_strfree(&repleq); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
623 | cx_strfree(&replempty1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
624 | cx_strfree(&replempty2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
625 | cx_strfree(&replpre); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
626 | cx_strfree(&replan1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
627 | cx_strfree(&replan4); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
628 | cx_strfree(&replan9); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
629 | cx_strfree(&replan10); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
630 | cx_strfree(&replcs1); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
631 | cx_strfree(&replcs2); |
0f3c9662f9b5
add tests and missing implementations for strings
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
632 | } |
586
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
633 | |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
634 | TEST(String, strupper) { |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
635 | cxmutstr str = cx_strdup(cx_str("thIs 1s @ Te$t")); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
636 | cx_strupper(str); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
637 | EXPECT_STREQ(str.ptr, "THIS 1S @ TE$T"); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
638 | cx_strfree(&str); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
639 | } |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
640 | |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
641 | TEST(String, strlower) { |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
642 | cxmutstr str = cx_strdup(cx_str("thIs 1s @ Te$t")); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
643 | cx_strlower(str); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
644 | EXPECT_STREQ(str.ptr, "this 1s @ te$t"); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
645 | cx_strfree(&str); |
aa51aaa907b9
add tests for strupper and strlower
Mike Becker <universe@uap-core.de>
parents:
585
diff
changeset
|
646 | } |