121 lines
2.5 KiB
V
121 lines
2.5 KiB
V
module resp
|
|
|
|
import incubaid.herolib.ui.console
|
|
|
|
fn print_val_to_check(s string) {
|
|
console.print_debug(s.replace('\n', '\\\\n').replace('\r', '\\\\r'))
|
|
}
|
|
|
|
fn val_to_check(s string) string {
|
|
return s.replace('\n', '\\n').replace('\r', '\\r')
|
|
}
|
|
|
|
fn test_readline() {
|
|
mut r := new_line_reader('123456'.bytes())
|
|
|
|
mut res := []u8{}
|
|
for _ in 0 .. 9 {
|
|
res << r.read(1)
|
|
}
|
|
assert res.bytestr() == '123456'
|
|
|
|
res = []u8{}
|
|
r.reset()
|
|
for _ in 0 .. 7 {
|
|
res << r.read(2)
|
|
}
|
|
assert res.bytestr() == '123456'
|
|
|
|
r = new_line_reader('12\n34\r\n56\r\n'.bytes())
|
|
res = []u8{}
|
|
for _ in 0 .. 4 {
|
|
line := r.read_line()
|
|
res << line
|
|
res << '\\n'.bytes()
|
|
}
|
|
assert '12\\n34\\n56\\n\\n' == res.bytestr()
|
|
}
|
|
|
|
fn test_1() {
|
|
mut rv := RValue(RError{
|
|
value: 'my error'
|
|
})
|
|
// console.print_debug(rv.encode()rv.encode().replace("\n","\\n").replace("\r","\\r"))
|
|
|
|
rv = RValue(RArray{
|
|
values: [RValue(RError{
|
|
value: 'my error'
|
|
}), RValue(RInt{
|
|
value: 100
|
|
})]
|
|
})
|
|
assert '*2\\r\\n-my error\\r\\n:100\\r\\n' == rv.encode().bytestr().replace('\n',
|
|
'\\n').replace('\r', '\\r')
|
|
|
|
rv = r_list_string(['a', 'b', 'c'])
|
|
assert '*3\\r\\n+a\\r\\n+b\\r\\n+c\\r\\n' == rv.encode().bytestr().replace('\n', '\\n').replace('\r',
|
|
'\\r')
|
|
}
|
|
|
|
fn test_2() {
|
|
mut b := builder_new()
|
|
b.add(r_list_string(['a', 'b']))
|
|
b.add(r_int(10))
|
|
b.add(r_ok())
|
|
print_val_to_check(b.data.bytestr())
|
|
assert '*2\\r\\n+a\\r\\n+b\\r\\n:10\\r\\n+OK\\r\\n' == val_to_check(b.data.bytestr())
|
|
|
|
res := decode(b.data) or { [r_error('could not decode')] }
|
|
|
|
compare := [
|
|
RValue(RArray{
|
|
values: [RValue(RString{
|
|
value: 'a'
|
|
}), RValue(RString{
|
|
value: 'b'
|
|
})]
|
|
}),
|
|
RValue(RInt{
|
|
value: 10
|
|
}),
|
|
RValue(RString{
|
|
value: 'OK'
|
|
}),
|
|
]
|
|
assert compare == res
|
|
}
|
|
|
|
fn test_3() {
|
|
data := encode([r_list_string(['a', 'b']), r_int(10), r_ok()])
|
|
console.print_debug(data)
|
|
|
|
// panic('s')
|
|
}
|
|
|
|
// fn test_buffered_reader1() {
|
|
// mut stream := buffered_string_reader('Hello')
|
|
// mut buff := []u8{len: 1}
|
|
// assert buff.len == 1
|
|
// for i in 0 .. 8 {
|
|
// z := stream.read(mut buff) or { -1 }
|
|
// console.print_header(' reader buff len $buff.len ($i:$buff) | readresult: $z')
|
|
// }
|
|
// panic('s')
|
|
// }
|
|
|
|
// fn test_buffered_reader2() {
|
|
// mut str := StringReader{
|
|
// text: 'Hello '
|
|
// }
|
|
// mut stream := io.new_buffered_reader(reader: io.make_reader(str), cap: 256)
|
|
// mut buff := []u8{len: 1}
|
|
// assert buff.len == 1
|
|
// for i in 0 .. 8 {
|
|
// z := stream.read(mut buff) or { -1 }
|
|
// console.print_header(' reader buff len $buff.len ($i:$buff) | readresult: $z')
|
|
// }
|
|
|
|
// // panic('s')
|
|
|
|
// }
|