44 lines
873 B
Go
44 lines
873 B
Go
package secret
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
var tests = []struct {
|
|
code int
|
|
h []string
|
|
}{
|
|
{1, []string{"wink"}},
|
|
{2, []string{"double blink"}},
|
|
{4, []string{"close your eyes"}},
|
|
{8, []string{"jump"}},
|
|
{3, []string{"wink", "double blink"}},
|
|
{19, []string{"double blink", "wink"}},
|
|
{31, []string{"jump", "close your eyes", "double blink", "wink"}},
|
|
{0, nil},
|
|
{-1, nil},
|
|
{32, nil},
|
|
{33, []string{"wink"}},
|
|
}
|
|
|
|
func TestHandshake(t *testing.T) {
|
|
for _, test := range tests {
|
|
h := Handshake(test.code)
|
|
// use len() to allow either nil or empty list, because
|
|
// they are not equal by DeepEqual
|
|
if len(h) == 0 && len(test.h) == 0 {
|
|
continue
|
|
}
|
|
if !reflect.DeepEqual(h, test.h) {
|
|
t.Fatalf("Handshake(%d) = %v, want %v.", test.code, h, test.h)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkHandshake(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
Handshake(31)
|
|
}
|
|
}
|