-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStringToolsTests.hx
More file actions
168 lines (155 loc) · 5.69 KB
/
StringToolsTests.hx
File metadata and controls
168 lines (155 loc) · 5.69 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
package;
class StringToolsTests {
var t:Main;
public function new(main:Main) {
t = main;
}
public function run() {
t.section("StringToolsContains");
checkStringToolsContains();
t.section("StringToolsStartsEndsWith");
checkStringToolsStartsEndsWith();
t.section("StringToolsTrim");
checkStringToolsTrim();
t.section("StringToolsPad");
checkStringToolsPad();
t.section("StringToolsReplace");
checkStringToolsReplace();
t.section("StringToolsHex");
checkStringToolsHex();
t.section("StringToolsIsSpace");
checkStringToolsIsSpace();
t.section("StringToolsCodeAt");
checkStringToolsCodeAt();
t.section("StringToolsHtmlEscape");
checkStringToolsHtmlEscape();
t.section("StringToolsUrlEncode");
checkStringToolsUrlEncode();
}
function checkStringToolsContains() {
var s = "Hello World";
var c1 = StringTools.contains(s, "World");
t.isTrue(c1, "contains World");
var c2 = StringTools.contains(s, "xyz");
t.isFalse(c2, "not contains xyz");
var c3 = StringTools.contains(s, "Hello");
t.isTrue(c3, "contains Hello");
var c4 = StringTools.contains("", "a");
t.isFalse(c4, "empty not contains a");
}
function checkStringToolsStartsEndsWith() {
var s = "Hello World";
var sw1 = StringTools.startsWith(s, "Hello");
t.isTrue(sw1, "startsWith Hello");
var sw2 = StringTools.startsWith(s, "World");
t.isFalse(sw2, "not startsWith World");
var sw3 = StringTools.startsWith(s, "");
t.isTrue(sw3, "startsWith empty");
var ew1 = StringTools.endsWith(s, "World");
t.isTrue(ew1, "endsWith World");
var ew2 = StringTools.endsWith(s, "Hello");
t.isFalse(ew2, "not endsWith Hello");
var ew3 = StringTools.endsWith(s, "");
t.isTrue(ew3, "endsWith empty");
}
function checkStringToolsTrim() {
var r1 = StringTools.trim(" hello ");
t.stringEquals("hello", r1, "trim");
var r2 = StringTools.trim("hello");
t.stringEquals("hello", r2, "trim no spaces");
var r3 = StringTools.trim(" ");
t.stringEquals("", r3, "trim all spaces");
var r4 = StringTools.ltrim(" hello ");
t.stringEquals("hello ", r4, "ltrim");
var r5 = StringTools.ltrim("hello");
t.stringEquals("hello", r5, "ltrim no spaces");
var r6 = StringTools.rtrim(" hello ");
t.stringEquals(" hello", r6, "rtrim");
var r7 = StringTools.rtrim("hello");
t.stringEquals("hello", r7, "rtrim no spaces");
}
function checkStringToolsPad() {
var r1 = StringTools.lpad("hi", "0", 5);
t.stringEquals("000hi", r1, "lpad zeros");
var r2 = StringTools.lpad("hello", "0", 3);
t.stringEquals("hello", r2, "lpad no pad needed");
var r3 = StringTools.lpad("x", "ab", 5);
t.stringEquals("ababx", r3, "lpad multi char");
var r4 = StringTools.rpad("hi", "0", 5);
t.stringEquals("hi000", r4, "rpad zeros");
var r5 = StringTools.rpad("hello", "0", 3);
t.stringEquals("hello", r5, "rpad no pad needed");
var r6 = StringTools.rpad("x", "ab", 5);
t.stringEquals("xabab", r6, "rpad multi char");
}
function checkStringToolsReplace() {
var r1 = StringTools.replace("hello world", "world", "there");
t.stringEquals("hello there", r1, "replace word");
var r2 = StringTools.replace("aaa", "a", "bb");
t.stringEquals("bbbbbb", r2, "replace all occurrences");
var r3 = StringTools.replace("abc", "", "-");
t.stringEquals("a-b-c", r3, "replace empty sub");
var r4 = StringTools.replace("hello", "xyz", "abc");
t.stringEquals("hello", r4, "replace not found");
}
function checkStringToolsHex() {
var r1 = StringTools.hex(255);
t.stringEquals("FF", r1, "hex 255");
var r2 = StringTools.hex(0);
t.stringEquals("0", r2, "hex 0");
var r3 = StringTools.hex(16);
t.stringEquals("10", r3, "hex 16");
var r4 = StringTools.hex(255, 4);
t.stringEquals("00FF", r4, "hex 255 pad 4");
var r5 = StringTools.hex(1, 8);
t.stringEquals("00000001", r5, "hex 1 pad 8");
}
function checkStringToolsIsSpace() {
var nine = Std.parseInt("9");
var s = " " + String.fromCharCode(nine) + "hello";
var v1 = StringTools.isSpace(s, 0);
t.isTrue(v1, "space is space");
var v2 = StringTools.isSpace(s, 1);
t.isTrue(v2, "tab is space");
var v3 = StringTools.isSpace(s, 2);
t.isFalse(v3, "h is not space");
var v4 = StringTools.isSpace("", 0);
t.isFalse(v4, "empty string");
var v5 = StringTools.isSpace("a", -1);
t.isFalse(v5, "negative index");
}
function checkStringToolsCodeAt() {
var s = "ABC";
var fc0 = StringTools.fastCodeAt(s, 0);
t.intEquals(65, fc0, "fastCodeAt 0");
var fc2 = StringTools.fastCodeAt(s, 2);
t.intEquals(67, fc2, "fastCodeAt 2");
var fc3 = StringTools.fastCodeAt(s, 3);
var isEof = StringTools.isEof(fc3);
t.isTrue(isEof, "fastCodeAt out of bounds is EOF");
var uc0 = StringTools.unsafeCodeAt(s, 0);
t.intEquals(65, uc0, "unsafeCodeAt 0");
var uc1 = StringTools.unsafeCodeAt(s, 1);
t.intEquals(66, uc1, "unsafeCodeAt 1");
}
function checkStringToolsHtmlEscape() {
var r1 = StringTools.htmlEscape("<b>bold</b>");
t.stringEquals("<b>bold</b>", r1, "htmlEscape tags");
var r2 = StringTools.htmlEscape("a & b");
t.stringEquals("a & b", r2, "htmlEscape amp");
var r3 = StringTools.htmlUnescape("<b>bold</b>");
t.stringEquals("<b>bold</b>", r3, "htmlUnescape tags");
var r4 = StringTools.htmlUnescape("a & b");
t.stringEquals("a & b", r4, "htmlUnescape amp");
}
function checkStringToolsUrlEncode() {
var r1 = StringTools.urlEncode("hello world");
t.stringEquals("hello%20world", r1, "urlEncode space");
var r2 = StringTools.urlEncode("a=1&b=2");
t.stringEquals("a%3D1%26b%3D2", r2, "urlEncode params");
var r3 = StringTools.urlDecode("hello%20world");
t.stringEquals("hello world", r3, "urlDecode percent");
var r4 = StringTools.urlDecode("hello+world");
t.stringEquals("hello world", r4, "urlDecode plus");
}
}