111 lines
1.7 KiB
Go
111 lines
1.7 KiB
Go
package base62
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestValid(t *testing.T) {
|
|
tCases := []struct {
|
|
in string
|
|
out string
|
|
}{
|
|
{
|
|
"",
|
|
"0",
|
|
},
|
|
{
|
|
"foo",
|
|
"sapp",
|
|
},
|
|
{
|
|
"5d5746d044b9a9429249966c9e3fee178ca679b91487b11d4b73c9865202104c",
|
|
"cozMP2pOYdDiNGeFQ2afKAOGIzO0HVpJ8OPFXuVPNbHasFyenK9CzIIPuOG7EFWOCy4YWvKGZa671N4kRSoaxZ",
|
|
},
|
|
{
|
|
"5ba33e16d742f3c785f6e7e8bb6f5fe82346ffa1c47aa8e95da4ddd5a55bb334",
|
|
"cotpEJPnhuTRofLi4lDe5iKw2fkSGc6TpUYeuWoBp8eLYJBWLRUVDZI414OjOCWXKZ0AI8gqNMoxd4eLOklwYk",
|
|
},
|
|
{
|
|
" ",
|
|
"w",
|
|
},
|
|
{
|
|
"-",
|
|
"J",
|
|
},
|
|
{
|
|
"0",
|
|
"M",
|
|
},
|
|
{
|
|
"1",
|
|
"N",
|
|
},
|
|
{
|
|
"-1",
|
|
"30B",
|
|
},
|
|
{
|
|
"11",
|
|
"3h7",
|
|
},
|
|
{
|
|
"abc",
|
|
"qMin",
|
|
},
|
|
{
|
|
"1234598760",
|
|
"1a0AFzKIPnihTq",
|
|
},
|
|
{
|
|
"abcdefghijklmnopqrstuvwxyz",
|
|
"hUBXsgd3F2swSlEgbVi2p0Ncr6kzVeJTLaW",
|
|
},
|
|
}
|
|
|
|
for _, c := range tCases {
|
|
e := Encode([]byte(c.in))
|
|
d := string(Decode(e))
|
|
|
|
if d != c.in {
|
|
t.Fatalf("decoded value didn't match input %#v %#v", c.in, d)
|
|
}
|
|
|
|
if e != c.out {
|
|
t.Fatalf("encoded value didn't match expected %#v, %#v", e, c.out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestInvalid(t *testing.T) {
|
|
d := Decode("!0000/")
|
|
if len(d) != 0 {
|
|
t.Fatalf("Decode of invalid string should be empty, got %#v", d)
|
|
}
|
|
}
|
|
|
|
func TestRandom(t *testing.T) {
|
|
a, err1 := Random(16, true)
|
|
b, err2 := Random(16, true)
|
|
|
|
if err1 != nil || err2 != nil {
|
|
t.Fatalf("Unexpected errors: %v, %v", err1, err2)
|
|
}
|
|
|
|
if a == b {
|
|
t.Fatalf("Expected different random values. Got duplicate: %s", a)
|
|
}
|
|
|
|
for i := 0; i < 3000; i++ {
|
|
c, _ := Random(i, true)
|
|
if len(c) != i {
|
|
t.Fatalf("Expected length %d, got: %d", i, len(c))
|
|
}
|
|
}
|
|
|
|
d, _ := Random(100, false)
|
|
if len(d) < 133 || len(d) > 135 {
|
|
t.Fatalf("Expected length 133-135, got: %d", len(d))
|
|
}
|
|
}
|