-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathruntime_pack_test.v
100 lines (91 loc) · 2.64 KB
/
runtime_pack_test.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
module vproto
fn test_pack_wire_type() {
w := vproto.WireType._32bit
tag := u32(40000)
b := vproto.pack_tag_wire_type(tag, w)
r := vproto.unpack_tag_wire_type(b) or {
panic('$err')
}
assert r.tag == tag
assert r.wire_type == w
}
fn test_int32_fields() {
int_field_packed := pack_int32_field(100000, 100)
t := unpack_tag_wire_type(int_field_packed) or {
panic('$err')
}
assert t.tag == 100
assert t.wire_type == .varint
i,v := unpack_int32_field(int_field_packed[t.consumed..], .varint)
assert v == 100000
assert i == 3
}
fn test_sint32_fields() {
int_field_packed := pack_sint32_field(100000, 100)
t := unpack_tag_wire_type(int_field_packed) or {
panic('$err')
}
assert t.tag == 100
assert t.wire_type == .varint
i,v := unpack_sint32_field(int_field_packed[t.consumed..], .varint)
assert v == 100000
assert i == 3
}
fn test_uint64_fields() {
int_field_packed := pack_uint64_field(11111111, 100)
t := unpack_tag_wire_type(int_field_packed) or {
panic('$err')
}
assert t.tag == 100
assert t.wire_type == .varint
i,v := unpack_uint64_field(int_field_packed[t.consumed..], .varint) or { panic(err) }
assert v == 11111111
assert i == 4
}
// fn test_int64_fields() {
// int_field_packed := pack_int64_field(100000, 100)
// t := unpack_tag_wire_type(int_field_packed) or {
// panic('$err')
// }
// assert t.tag == 100
// assert t.wire_type == .varint
// i, v := unpack_int64_field(int_field_packed[t.consumed..], .varint)
// assert v == 100000
// assert i == 3
// }
// fn test_sint64_fields() {
// int_field_packed := pack_sint64_field(100000, 100)
// t := unpack_tag_wire_type(int_field_packed) or {
// panic('$err')
// }
// assert t.tag == 100
// assert t.wire_type == .varint
// i, v := unpack_sint64_field(int_field_packed[t.consumed..], .varint)
// assert v == 100000
// assert i == 3
// }
fn test_bytes_field() {
bytes_field_packed := pack_bytes_field([u8(0), 1, 2, 3, 4], 100)
t := unpack_tag_wire_type(bytes_field_packed) or {
panic('$err')
}
assert t.tag == 100
assert t.wire_type == .length_prefixed
consumed,v := unpack_bytes_field(bytes_field_packed[t.consumed..], .length_prefixed) or { panic(err) }
assert v.len == 5
for i := 0; i < 5; i++ {
assert v[i] == i
}
assert consumed == 6
}
fn test_string_field() {
str := 'Hello, Sailor!'
string_field_packed := pack_string_field(str, 100)
t := unpack_tag_wire_type(string_field_packed) or {
panic('$err')
}
assert t.tag == 100
assert t.wire_type == .length_prefixed
_,v := unpack_string_field(string_field_packed[t.consumed..], .length_prefixed) or { panic(err) }
assert v == str
}