From c460ce761cb29d8d04f302dc6fd62fd0c170bfab Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 25 Aug 2016 12:34:26 +0200 Subject: Handshake --- go/secret-handshake/secret_handshake_test.go | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 go/secret-handshake/secret_handshake_test.go (limited to 'go/secret-handshake/secret_handshake_test.go') diff --git a/go/secret-handshake/secret_handshake_test.go b/go/secret-handshake/secret_handshake_test.go new file mode 100644 index 0000000..65fd058 --- /dev/null +++ b/go/secret-handshake/secret_handshake_test.go @@ -0,0 +1,43 @@ +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) + } +} -- cgit v1.2.3