package modhex
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
type encDecTest struct {
|
|
enc string
|
|
dec []byte
|
|
}
|
|
|
|
var encDecTests = []encDecTest{
|
|
{"", []byte{}},
|
|
{"dteffuje", []byte{0x2d, 0x34, 0x4e, 0x83}},
|
|
{
|
|
"hknhfjbrjnlnldnhcujvddbikngjrtgh",
|
|
[]byte{0x69, 0xb6, 0x48, 0x1c, 0x8b, 0xab,
|
|
0xa2, 0xb6, 0x0e, 0x8f, 0x22, 0x17,
|
|
0x9b, 0x58, 0xcd, 0x56},
|
|
},
|
|
{
|
|
"urtubjtnuihvntcreeeecvbregfjibtn",
|
|
[]byte{0xec, 0xde, 0x18, 0xdb, 0xe7, 0x6f,
|
|
0xbd, 0x0c, 0x33, 0x33, 0x0f, 0x1c,
|
|
0x35, 0x48, 0x71, 0xdb},
|
|
},
|
|
}
|
|
|
|
func TestEncode(t *testing.T) {
|
|
for i, test := range encDecTests {
|
|
dst := make([]byte, EncodedLen(len(test.dec)))
|
|
|
|
n := Encode(dst, test.dec)
|
|
|
|
if n != len(dst) {
|
|
t.Errorf("#%d: bad return value: got %d want: %d", i, n, len(dst))
|
|
}
|
|
|
|
if string(dst) != test.enc {
|
|
t.Errorf("#%d: got: %#v want %#v", i, dst, []byte(test.enc))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDecode(t *testing.T) {
|
|
for i, test := range encDecTests {
|
|
dst := make([]byte, DecodedLen(len(test.enc)))
|
|
|
|
n, err := Decode(dst, []byte(test.enc))
|
|
|
|
if err != nil {
|
|
t.Errorf("#%d: unexpected err value: %s", i, err)
|
|
continue
|
|
}
|
|
|
|
if n != len(dst) {
|
|
t.Errorf("#%d: bad return value got: %d want:%d", i, n, len(dst))
|
|
}
|
|
|
|
if !bytes.Equal(dst, test.dec) {
|
|
t.Errorf("#%d: got %#v want: %#v", i, dst, test.dec)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEncodeToString(t *testing.T) {
|
|
for i, test := range encDecTests {
|
|
s := EncodeToString(test.dec)
|
|
if s != test.enc {
|
|
t.Errorf("#%d: got: %s want: %s", i, s, test.enc)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDecodeString(t *testing.T) {
|
|
for i, test := range encDecTests {
|
|
dst, err := DecodeString(test.enc)
|
|
|
|
if err != nil {
|
|
t.Errorf("#%d: unexpected err value: %s", i, err)
|
|
continue
|
|
}
|
|
|
|
if !bytes.Equal(dst, test.dec) {
|
|
t.Errorf("#%d: got %#v want: %#v", i, dst, test.dec)
|
|
}
|
|
}
|
|
}
|
|
|
|
type errTest struct {
|
|
in string
|
|
out string
|
|
err error
|
|
}
|
|
|
|
var errTests = []errTest{
|
|
{"", "", nil},
|
|
{"c", "", ErrLength},
|
|
{"zteff", "", InvalidByteError('z')},
|
|
{"dtefz", "\x2d\x34", InvalidByteError('z')},
|
|
{"ecebe", "01", ErrLength},
|
|
{"cq", "", InvalidByteError('q')},
|
|
{"ccqq", "\x00", InvalidByteError('q')},
|
|
{"c\x01", "", InvalidByteError('\x01')},
|
|
{"vvuut", "\xff\xee", ErrLength},
|
|
}
|
|
|
|
func TestDecodeErr(t *testing.T) {
|
|
for i, test := range errTests {
|
|
out := make([]byte, len(test.in)+10)
|
|
n, err := Decode(out, []byte(test.in))
|
|
if string(out[:n]) != test.out || err != test.err {
|
|
t.Errorf("#%d: Decode(%q) = %q, %v, want %q, %v", i, test.in, string(out[:n]), err, test.out, test.err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDecodeStringErr(t *testing.T) {
|
|
for i, test := range errTests {
|
|
out, err := DecodeString(test.in)
|
|
if string(out) != test.out || err != test.err {
|
|
t.Errorf("#%d: DecodeString(%q) = %q, %v, want %q, %v", i, test.in, out, err, test.out, test.err)
|
|
}
|
|
}
|
|
}
|