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  }