v/vlib/strings/builder_test.v

80 lines
1.5 KiB
V
Raw Normal View History

import strings
2019-11-10 01:08:53 +01:00
type MyInt = int
fn test_sb() {
mut sb := strings.Builder{}
sb.write('hi')
sb.write('!')
sb.write('hello')
assert sb.len == 8
sb_end := sb.str()
assert sb_end == 'hi!hello'
assert sb.len == 0
2020-06-17 00:59:33 +02:00
///
sb = strings.new_builder(10)
sb.write('a')
sb.write('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('x = $x y = $y')
assert sb.str() == 'x = 10 y = 20'
2020-06-17 04:05:13 +02:00
$if !windows {
// TODO msvc bug
sb = strings.new_builder(10)
sb.write('123456')
last_2 := sb.cut_last(2)
assert last_2 == '56'
final_sb := sb.str()
assert final_sb == '1234'
2020-06-17 04:05:13 +02:00
}
}
2019-11-10 01:08:53 +01:00
const (
maxn = 100000
2019-11-10 01:08:53 +01:00
)
fn test_big_sb() {
mut sb := strings.new_builder(100)
mut sb2 := strings.new_builder(10000)
for i in 0..maxn {
2019-11-10 01:08:53 +01:00
sb.writeln(i.str())
sb2.write('+')
2019-12-08 12:34:51 +01:00
}
2019-11-10 01:08:53 +01:00
s := sb.str()
lines := s.split_into_lines()
assert lines.len == maxn
2019-11-10 01:08:53 +01:00
assert lines[0] == '0'
assert lines[1] == '1'
assert lines[777] == '777'
assert lines[98765] == '98765'
println(sb2.len)
assert sb2.len == maxn
2019-12-08 12:34:51 +01:00
}
2019-11-10 01:08:53 +01:00
2019-12-06 21:02:09 +01:00
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)
2019-12-08 12:34:51 +01:00
count++
2019-12-06 21:02:09 +01:00
assert count == sb.len
}
sb_final := sb.str()
assert sb_final == temp_str
2019-12-06 21:02:09 +01:00
}