github.com/slspeek/camlistore_namedsearch@v0.0.0-20140519202248-ed6f70f7721a/misc/buildbot/master/bot_test.go (about) 1 package main 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestRingBuffer(t *testing.T) { 9 rb := newRingBuffer(4) 10 data := []struct { 11 in, want string 12 }{ 13 {in: "a", want: "a"}, 14 {in: "b", want: "ab"}, 15 {in: "c", want: "abc"}, 16 {in: "d", want: "abcd"}, 17 {in: "e", want: "bcde"}, 18 {in: "f", want: "cdef"}, 19 // Multibyte writes that wrap the ring buffer. 20 {in: "ghi", want: "fghi"}, 21 {in: "jkl", want: "ijkl"}, 22 {in: "mno", want: "lmno"}, 23 // Write larger than ring buffer. 24 {in: "pqrstuv", want: "stuv"}, 25 } 26 for i, d := range data { 27 in := []byte(d.in) 28 n, err := rb.Write(in) 29 if err != nil { 30 t.Error(err) 31 } 32 if n != len(in) { 33 t.Error(i, "Wrote", n, "bytes, want", len(in)) 34 } 35 got := rb.Bytes() 36 want := []byte(d.want) 37 if !reflect.DeepEqual(want, got) { 38 t.Errorf("%d Got %q want %q", i, got, want) 39 } 40 } 41 }