import "std/string.zc" test "string_split_basic" { let s = String::from("a,b,c"); let parts = s.split(','); if (parts.length() != 3) { println "Split length fail: {parts.length()}"; exit(1); } let p0 = parts.get(0); let t0 = String::from("a"); if (!p0.eq(&t0)) exit(1); let p1 = parts.get(1); let t1 = String::from("b"); if (!p1.eq(&t1)) exit(1); let p2 = parts.get(2); let t2 = String::from("c"); if (!p2.eq(&t2)) exit(1); for p in &parts { p.free(); } parts.free(); } test "string_split_edge" { let s = String::from("hello"); let parts = s.split(' '); // Not found if (parts.length() != 1) { println "Split edge 1 failed"; exit(1); } let p0 = parts.get(0); if (!p0.eq(&s)) exit(1); p0.free(); parts.free(); let s2 = String::from("a,,b"); let parts2 = s2.split(','); if (parts2.length() != 3) { println "Split edge 2 failed: {parts2.length()}"; exit(1); } let empty = parts2.get(1); if (!empty.is_empty()) exit(1); for p in &parts2 { p.free(); } parts2.free(); }