diff options
Diffstat (limited to 'v_windows/v/vlib/strings/builder_test.v')
-rw-r--r-- | v_windows/v/vlib/strings/builder_test.v | 114 |
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' +} |