1 package ber
2
3 import (
4 "testing"
5 )
6
7 func TestIA5String(t *testing.T) {
8 for _, test := range []struct {
9 value string
10 expectedErr string
11 }{
12 {"asdfgh", ""},
13 {"asdfgå", "invalid character for IA5String at pos 5: å"},
14 } {
15 pkt := NewString(ClassUniversal, TypePrimitive, TagIA5String, test.value, test.value)
16 dec, err := DecodePacketErr(pkt.Bytes())
17 if err == nil {
18 if test.expectedErr != "" {
19 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
20 }
21 if dec.Value.(string) != test.value {
22 t.Errorf("did not get back original value: %s <=> %s", dec.Value.(string), test.value)
23 }
24 } else if err.Error() != test.expectedErr {
25 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
26 }
27 }
28 }
29
30 func TestPrintableString(t *testing.T) {
31 for _, test := range []struct {
32 value string
33 expectedErr string
34 }{
35 {"asdfgh", ""},
36 {"asdfgå", "invalid character in position 5"},
37 } {
38 pkt := NewString(ClassUniversal, TypePrimitive, TagPrintableString, test.value, test.value)
39 dec, err := DecodePacketErr(pkt.Bytes())
40 if err == nil {
41 if test.expectedErr != "" {
42 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
43 }
44 if dec.Value.(string) != test.value {
45 t.Errorf("did not get back original value: %s <=> %s", dec.Value.(string), test.value)
46 }
47 } else if err.Error() != test.expectedErr {
48 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
49 }
50 }
51 }
52
53 func TestUTF8String(t *testing.T) {
54 for _, test := range []struct {
55 value string
56 expectedErr string
57 }{
58 {"åäöüß", ""},
59 {"asdfg\xFF", "invalid UTF-8 string"},
60 } {
61 pkt := NewString(ClassUniversal, TypePrimitive, TagUTF8String, test.value, test.value)
62 dec, err := DecodePacketErr(pkt.Bytes())
63 if err == nil {
64 if test.expectedErr != "" {
65 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
66 }
67 if dec.Value.(string) != test.value {
68 t.Errorf("did not get back original value: %s <=> %s", dec.Value.(string), test.value)
69 }
70 } else if err.Error() != test.expectedErr {
71 t.Errorf("got unexpected error for `%s`: %s", test.value, err)
72 }
73 }
74 }
75
View as plain text