summaryrefslogtreecommitdiff
path: root/tests/std/test_string_split.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/std/test_string_split.zc')
-rw-r--r--tests/std/test_string_split.zc57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/std/test_string_split.zc b/tests/std/test_string_split.zc
new file mode 100644
index 0000000..496dbd1
--- /dev/null
+++ b/tests/std/test_string_split.zc
@@ -0,0 +1,57 @@
+import "std/string.zc"
+
+test "string_split_basic" {
+ var s = String::from("a,b,c");
+ var parts = s.split(',');
+
+ if (parts.length() != 3) {
+ println "Split length fail: {parts.length()}";
+ exit(1);
+ }
+
+ var p0 = parts.get(0);
+ var t0 = String::from("a");
+ if (!p0.eq(&t0)) exit(1);
+
+ var p1 = parts.get(1);
+ var t1 = String::from("b");
+ if (!p1.eq(&t1)) exit(1);
+
+ var p2 = parts.get(2);
+ var t2 = String::from("c");
+ if (!p2.eq(&t2)) exit(1);
+
+ for p in &parts {
+ p.free();
+ }
+ parts.free();
+}
+
+test "string_split_edge" {
+ var s = String::from("hello");
+ var parts = s.split(' '); // Not found
+
+ if (parts.length() != 1) {
+ println "Split edge 1 failed";
+ exit(1);
+ }
+
+ var p0 = parts.get(0);
+ if (!p0.eq(&s)) exit(1);
+
+ p0.free();
+ parts.free();
+
+ var s2 = String::from("a,,b");
+ var parts2 = s2.split(',');
+ if (parts2.length() != 3) {
+ println "Split edge 2 failed: {parts2.length()}";
+ exit(1);
+ }
+
+ var empty = parts2.get(1);
+ if (!empty.is_empty()) exit(1);
+
+ for p in &parts2 { p.free(); }
+ parts2.free();
+}