ulid/crockford32/crockford32_test.go

68 lines
1.4 KiB
Go

package crockford32
import (
"testing"
)
func TestCrockfordEncode(t *testing.T) {
runAll := true
type testData struct {
TestName string
RunIt bool
Input []byte
Expected string
}
tests := []testData{
{
TestName: "nil",
RunIt: false || runAll,
Input: nil,
Expected: "",
},
{
TestName: "1 byte",
RunIt: false || runAll,
Input: []byte{0b11111},
Expected: "0Z",
},
{
TestName: "2 bytes",
RunIt: false || runAll,
Input: []byte{0b00000011, 0b11111111},
Expected: "00ZZ",
},
{
TestName: "valid ulid",
RunIt: false || runAll,
Input: []byte{1, 141, 178, 57, 150, 88, 1, 148, 253, 194, 250, 47, 252, 192, 65, 211},
Expected: "01HPS3K5JR06AFVGQT5ZYC0GEK",
},
{
TestName: "quick brown fox",
RunIt: false || runAll,
Input: []byte("The quick brown fox jumps over the lazy dog."),
Expected: "1A6GS90E5TPJRVB41H74VVQDRG6CVVR41N7AVBGECG6YXK5E8G78T3541P62YKS41J6YSSE",
},
{
TestName: "max ULID",
RunIt: false || runAll,
Input: []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
Expected: "7ZZZZZZZZZZZZZZZZZZZZZZZZZ",
},
}
for _, test := range tests {
t.Run(test.TestName, func(t *testing.T) {
if !test.RunIt {
t.SkipNow()
}
output := CrockfordEncode(test.Input)
if test.Expected != output {
t.Errorf("expected %v, got %v", test.Expected, output)
}
})
}
}