v2 / vlib / x / encoding / asn1 / visiblestring_test.v
42 lines · 36 sloc · 948 bytes · fdc49dc51a0d7e83abd5b383afaaab3f2793f2cf
Raw
1// Copyright (c) 2022, 2024 blackshirt. All rights reserved.
2// Use of this source code is governed by a MIT License
3// that can be found in the LICENSE file.
4module asn1
5
6// VisibleString
7struct VisibleTest {
8 inp string
9 out []u8
10 err IError
11}
12
13fn test_visible_string_handling() {
14 vb := [
15 VisibleTest{'', [u8(26), 0], none},
16 VisibleTest{'abc', [u8(26), 0x03, 97, 98, 99], none},
17 VisibleTest{'abc\x1A', [u8(26), 0x03, 97, 98, 99, 26], error('VisibleString: contains control chars')},
18 VisibleTest{'abc\x5A', [u8(26), 0x04, 97, 98, 99, 0x5a], none},
19 ]
20
21 for i, c in vb {
22 vs := VisibleString.new(c.inp) or {
23 assert err == c.err
24 continue
25 }
26 mut out := encode(vs) or {
27 assert err == c.err
28 continue
29 }
30
31 assert out == c.out
32
33 // back
34 vsback, idx := VisibleString.decode(out) or {
35 assert err == c.err
36 continue
37 }
38
39 assert vsback.tag().tag_number() == int(TagType.visiblestring)
40 assert vsback.value == c.inp
41 }
42}
43