mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
55 lines
1.5 KiB
V
55 lines
1.5 KiB
V
// Copyright (c) 2022, 2024 blackshirt. All rights reserved.
|
|
// Use of this source code is governed by a MIT License
|
|
// that can be found in the LICENSE file.
|
|
module asn1
|
|
|
|
// Tests case for PrintableString
|
|
fn test_encode_printablestring_basic() ! {
|
|
s := 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
|
|
ps := PrintableString.new(s)!
|
|
buf := encode(ps)!
|
|
|
|
mut out := [u8(0x13)]
|
|
length := [u8(0x81), u8(s.len)]
|
|
out << length
|
|
out << s.bytes()
|
|
// dump(out)
|
|
assert out == buf
|
|
|
|
psback, _ := PrintableString.decode(buf)!
|
|
assert psback.tag().tag_number() == int(TagType.printablestring)
|
|
assert psback.tag().tag_class() == .universal
|
|
|
|
assert psback.value == s
|
|
}
|
|
|
|
struct EncodingTest[T] {
|
|
input T
|
|
exp []u8
|
|
}
|
|
|
|
fn test_encode_printablestring_generic() {
|
|
data := [
|
|
// from dart asn1lib test
|
|
EncodingTest[string]{'TheTestString', [u8(0x13), 13, 84, 104, 101, 84, 101, 115, 116, 83,
|
|
116, 114, 105, 110, 103]},
|
|
EncodingTest[string]{'Test User 1', [u8(0x13), 0x0b, 84, 101, 115, 116, 32, 85, 115, 101,
|
|
114, 32, 49]},
|
|
]
|
|
|
|
for t in data {
|
|
ps := PrintableString.new(string(t.input))!
|
|
out := encode(ps)!
|
|
// out := serialize_printablestring(string(t.input))!
|
|
assert out == t.exp
|
|
|
|
// decode back
|
|
psback, _ := PrintableString.decode(out)!
|
|
|
|
assert psback.value == t.input
|
|
assert psback.tag().tag_number() == int(TagType.printablestring)
|
|
assert psback.tag().is_constructed() == false
|
|
}
|
|
}
|