perkeep/misc/buildbot/master/bot_test.go

42 lines
836 B
Go

package main
import (
"reflect"
"testing"
)
func TestRingBuffer(t *testing.T) {
rb := newRingBuffer(4)
data := []struct {
in, want string
}{
{in: "a", want: "a"},
{in: "b", want: "ab"},
{in: "c", want: "abc"},
{in: "d", want: "abcd"},
{in: "e", want: "bcde"},
{in: "f", want: "cdef"},
// Multibyte writes that wrap the ring buffer.
{in: "ghi", want: "fghi"},
{in: "jkl", want: "ijkl"},
{in: "mno", want: "lmno"},
// Write larger than ring buffer.
{in: "pqrstuv", want: "stuv"},
}
for i, d := range data {
in := []byte(d.in)
n, err := rb.Write(in)
if err != nil {
t.Error(err)
}
if n != len(in) {
t.Error(i, "Wrote", n, "bytes, want", len(in))
}
got := rb.Bytes()
want := []byte(d.want)
if !reflect.DeepEqual(want, got) {
t.Errorf("%d Got %q want %q", i, got, want)
}
}
}