forked from imageworks/pystring
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.cpp
More file actions
174 lines (154 loc) · 8.41 KB
/
test.cpp
File metadata and controls
174 lines (154 loc) · 8.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include "pystring.h"
#include "unittest.h"
PYSTRING_TEST_APP(PyStringUnitTests)
PYSTRING_ADD_TEST(pystring, endswith)
{
PYSTRING_CHECK_EQUAL(pystring::endswith("", ""), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("", "a"), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("a", ""), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("", ".mesh"), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh"), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", 0), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", 1), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", 1, 2), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", 1, 1), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", 1, -1), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("help", ".mesh", -1), false);
PYSTRING_CHECK_EQUAL(pystring::endswith(".mesh", ".mesh"), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("a.mesh", ".mesh"), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("a.", "."), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "ef"), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "cdef"), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "cdef", 2), true);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "cdef", 3), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "cdef", 2, 3), false);
PYSTRING_CHECK_EQUAL(pystring::endswith("abcdef", "cdef", -10), true);
}
PYSTRING_ADD_TEST(pystring, find)
{
PYSTRING_CHECK_EQUAL(pystring::find("", ""), 0);
PYSTRING_CHECK_EQUAL(pystring::find("", "a"), -1);
PYSTRING_CHECK_EQUAL(pystring::find("a", ""), 0);
PYSTRING_CHECK_EQUAL(pystring::find("a", "a"), 0);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", ""), 0);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "", -1), 5);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "", -2), 4);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "", -5), 1);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "", -6), 0);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "", -7), 0);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "def"), 3);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "def", 3), 3);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "def", 4), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "def", -5), 3);
PYSTRING_CHECK_EQUAL(pystring::find("abcdef", "def", -1), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", -2), 7);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", -1), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 0), 1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 1), 1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 2), 4);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4), 4);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 7), 7);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4, 3), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4, 4), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4, 5), -1);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4, -1), 4);
PYSTRING_CHECK_EQUAL(pystring::find("abcabcabc", "bc", 4, 6), 4);
}
PYSTRING_ADD_TEST(pystring, rfind)
{
PYSTRING_CHECK_EQUAL(pystring::rfind("", ""), 0);
PYSTRING_CHECK_EQUAL(pystring::rfind("", "a"), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("a", ""), 1);
PYSTRING_CHECK_EQUAL(pystring::rfind("a", "a"), 0);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", ""), 6);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "", 0, 1), 1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "", 0, 5), 5);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "", 0,-1), 5);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "", 0,-3), 3);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "def"), 3);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "def", 3), 3);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "def", 4), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "def", -5), 3);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcdef", "def", -1), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", -2), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", -1), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 0), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 1), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 4), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 7), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 4, -5), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 4, -10), -1);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "bc", 4, 20), 7);
PYSTRING_CHECK_EQUAL(pystring::rfind("abcabcabc", "abc", 6, 8), -1);
}
PYSTRING_ADD_TEST(pystring, slice)
{
PYSTRING_CHECK_EQUAL(pystring::slice(""), "");
PYSTRING_CHECK_EQUAL(pystring::slice("", 1), "");
PYSTRING_CHECK_EQUAL(pystring::slice("", -1), "");
PYSTRING_CHECK_EQUAL(pystring::slice("", -1,2), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef"), "abcdef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",0), "abcdef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",1), "bcdef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2), "cdef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,2), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,3), "c");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,1), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,-1), "cde");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,-2), "cd");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,-3), "c");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,-4), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",2,-5), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-1), "f");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-2), "ef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-99), "abcdef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-99,-98), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-2, 3), "");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-2, 10), "ef");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",-1), "f");
PYSTRING_CHECK_EQUAL(pystring::slice("abcdef",0,-1), "abcde");
}
PYSTRING_ADD_TEST(pystring, startswith)
{
PYSTRING_CHECK_EQUAL(pystring::startswith("", ""), true);
PYSTRING_CHECK_EQUAL(pystring::startswith("", "a"), false);
PYSTRING_CHECK_EQUAL(pystring::startswith("a", ""), true);
PYSTRING_CHECK_EQUAL(pystring::startswith("abc", "ab"), true);
PYSTRING_CHECK_EQUAL(pystring::startswith("abc", "abc"), true);
PYSTRING_CHECK_EQUAL(pystring::startswith("abc", "abcd"), false);
PYSTRING_CHECK_EQUAL(pystring::startswith("abcdef", "abc"), true);
PYSTRING_CHECK_EQUAL(pystring::startswith("abcdef", "abc", 1), false);
PYSTRING_CHECK_EQUAL(pystring::startswith("abcdef", "bc", 1), true);
}
PYSTRING_ADD_TEST(pystring, strip)
{
PYSTRING_CHECK_EQUAL(pystring::strip(""), "");
PYSTRING_CHECK_EQUAL(pystring::strip("a"), "a");
PYSTRING_CHECK_EQUAL(pystring::strip("a "), "a");
PYSTRING_CHECK_EQUAL(pystring::strip(" a"), "a");
PYSTRING_CHECK_EQUAL(pystring::strip("\n a "), "a");
PYSTRING_CHECK_EQUAL(pystring::strip("\r\n a \r\n"), "a");
PYSTRING_CHECK_EQUAL(pystring::strip("\r\n a \r\n\t"), "a");
}
PYSTRING_ADD_TEST(pystring, translate)
{
char t1data[256];
for(int i=0; i<256; ++i) t1data[i] = (char)i;
std::string t1(t1data, 256);
PYSTRING_CHECK_EQUAL(pystring::translate("", t1), "");
PYSTRING_CHECK_EQUAL(pystring::translate("cheese", t1), "cheese");
PYSTRING_CHECK_EQUAL(pystring::translate("cheese", t1, "e"), "chs");
char t2data[256];
for(int i=0; i<256; ++i) t2data[i] = (char)i;
t2data[101] = 111; // Map e -> o
std::string t2(t2data, 256);
PYSTRING_CHECK_EQUAL(pystring::translate("", t2), "");
PYSTRING_CHECK_EQUAL(pystring::translate("cheese", t2), "chooso");
}
PYSTRING_ADD_TEST(pystring, abspath)
{
PYSTRING_CHECK_EQUAL(pystring::os::path::abspath("", "/net"), "/net");
PYSTRING_CHECK_EQUAL(pystring::os::path::abspath("../jeremys", "/net/soft_scratch/users/stevel"), "/net/soft_scratch/users/jeremys");
PYSTRING_CHECK_EQUAL(pystring::os::path::abspath("../../../../tmp/a", "/net/soft_scratch/users/stevel"), "/tmp/a");
}