aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/strings/builder_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/vlib/strings/builder_test.v')
-rw-r--r--v_windows/v/vlib/strings/builder_test.v114
1 files changed, 114 insertions, 0 deletions
diff --git a/v_windows/v/vlib/strings/builder_test.v b/v_windows/v/vlib/strings/builder_test.v
new file mode 100644
index 0000000..9180c09
--- /dev/null
+++ b/v_windows/v/vlib/strings/builder_test.v
@@ -0,0 +1,114 @@
+import strings
+
+type MyInt = int
+
+const maxn = 100000
+
+fn test_sb() {
+ mut sb := strings.new_builder(100)
+ sb.write_string('hi')
+ sb.write_string('!')
+ sb.write_string('hello')
+ assert sb.len == 8
+ sb_end := sb.str()
+ assert sb_end == 'hi!hello'
+ assert sb.len == 0
+ ///
+ sb = strings.new_builder(10)
+ sb.write_string('a')
+ sb.write_string('b')
+ assert sb.len == 2
+ assert sb.str() == 'ab'
+ // Test interpolation optimization
+ sb = strings.new_builder(10)
+ x := 10
+ y := MyInt(20)
+ sb.writeln('x = $x y = $y')
+ res := sb.str()
+ assert res[res.len - 1] == `\n`
+ println('"$res"')
+ assert res.trim_space() == 'x = 10 y = 20'
+ //
+ sb = strings.new_builder(10)
+ sb.write_string('x = $x y = $y')
+ assert sb.str() == 'x = 10 y = 20'
+ //$if !windows {
+ sb = strings.new_builder(10)
+ sb.write_string('123456')
+ last_2 := sb.cut_last(2)
+ assert last_2 == '56'
+ final_sb := sb.str()
+ assert final_sb == '1234'
+ //}
+}
+
+fn test_big_sb() {
+ mut sb := strings.new_builder(100)
+ mut sb2 := strings.new_builder(10000)
+ for i in 0 .. maxn {
+ sb.writeln(i.str())
+ sb2.write_string('+')
+ }
+ s := sb.str()
+ lines := s.split_into_lines()
+ assert lines.len == maxn
+ assert lines[0] == '0'
+ assert lines[1] == '1'
+ assert lines[777] == '777'
+ assert lines[98765] == '98765'
+ println(sb2.len)
+ assert sb2.len == maxn
+}
+
+fn test_byte_write() {
+ mut sb := strings.new_builder(100)
+ temp_str := 'byte testing'
+ mut count := 0
+ for word in temp_str {
+ sb.write_b(word)
+ count++
+ assert count == sb.len
+ }
+ sb_final := sb.str()
+ assert sb_final == temp_str
+}
+
+fn test_strings_builder_reuse() {
+ mut sb := strings.new_builder(256)
+ sb.write_string('world')
+ assert sb.str() == 'world'
+ sb.write_string('hello')
+ assert sb.str() == 'hello'
+}
+
+fn test_cut_to() {
+ mut sb := strings.new_builder(16)
+ sb.write_string('hello')
+ assert sb.cut_to(3) == 'lo'
+ assert sb.len == 3
+ assert sb.cut_to(3) == ''
+ assert sb.len == 3
+ assert sb.cut_to(0) == 'hel'
+ assert sb.cut_to(32) == ''
+ assert sb.len == 0
+}
+
+fn test_write_rune() {
+ mut sb := strings.new_builder(10)
+ sb.write_rune(`h`)
+ sb.write_rune(`e`)
+ sb.write_rune(`l`)
+ sb.write_rune(`l`)
+ sb.write_rune(`o`)
+ x := sb.str()
+ assert x == 'hello'
+}
+
+fn test_write_runes() {
+ mut sb := strings.new_builder(20)
+ sb.write_runes([`h`, `e`, `l`, `l`, `o`])
+ sb.write_rune(` `)
+ sb.write_runes([`w`, `o`, `r`, `l`, `d`])
+ x := sb.str()
+ assert x == 'hello world'
+}