13 func TestReadUntil(t *testing.T) {
14 test := func(data, until string, leftover int, expectedErr error) {
15 r := bytes.NewReader([]byte(data))
16 err := readUntil(r, []byte(until))
17 if err != expectedErr {
20 if r.Len() != leftover {
24 test("feakjfeafeafegbaabc00", "abc", 2, nil)
25 test("feakjfeafeafegbaadc00", "abc", 0, io.EOF)
28 func TestSuffixMatchLen(t *testing.T) {
29 test := func(a, b string, expected int) {
30 actual := suffixMatchLen([]byte(a), []byte(b))
31 if actual != expected {
32 t.Fatalf("expected %d, got %d for %q and %q", expected, actual, a, b)
35 test("hello", "world", 0)
36 test("hello", "lo", 2)
37 test("hello", "llo", 3)
38 test("hello", "hell", 0)
39 test("hello", "helloooo!", 5)
40 test("hello", "lol!", 2)
41 test("hello", "mondo", 0)
42 test("mongo", "webscale", 0)
43 test("sup", "person", 1)
46 func TestHandshake(t *testing.T) {
48 wg := sync.WaitGroup{}
52 a, err := InitiateHandshake(a, []byte("yep"))
57 a.Write([]byte("hello world"))
59 n, _ := a.Read(msg[:])
60 log.Print(string(msg[:n]))
64 b, err := ReceiveHandshake(b, [][]byte{[]byte("nope"), []byte("yep"), []byte("maybe")})
70 n, _ := b.Read(msg[:])
71 log.Print(string(msg[:n]))
72 b.Write([]byte("yo dawg"))