mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-20 11:07:38 +03:00
c0f17c279e
Go's stdlib is very anemic
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
|
|
|
|
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
var _ = fmt.Print
|
|
|
|
func TestRingBuffer(t *testing.T) {
|
|
r := NewRingBuffer[int](8)
|
|
|
|
test_contents := func(expected ...int) {
|
|
actual := make([]int, len(expected))
|
|
num_read := r.ReadTillEmpty(actual)
|
|
if num_read != uint64(len(actual)) {
|
|
t.Fatalf("Did not read expected num of items: %d != %d", num_read, len(expected))
|
|
}
|
|
if !reflect.DeepEqual(expected, actual) {
|
|
t.Fatalf("Did not read expected items:\n%#v != %#v", actual, expected)
|
|
}
|
|
if r.Len() != 0 {
|
|
t.Fatalf("Reading contents did not empty the buffer")
|
|
}
|
|
}
|
|
r.WriteTillFull([]int{1, 2, 3, 4})
|
|
test_contents(1, 2, 3, 4)
|
|
r.WriteTillFull([]int{1, 2, 3, 4})
|
|
test_contents(1, 2, 3, 4)
|
|
|
|
r.Clear()
|
|
r.WriteTillFull([]int{1, 2, 3, 4})
|
|
r.ReadTillEmpty([]int{0, 1})
|
|
test_contents(3, 4)
|
|
r.WriteTillFull([]int{1, 2, 3, 4, 5})
|
|
test_contents(1, 2, 3, 4, 5)
|
|
|
|
r.Clear()
|
|
r.WriteTillFull([]int{1, 2, 3, 4})
|
|
r.WriteAllAndDiscardOld([]int{5, 6, 7, 8, 9})
|
|
test_contents(2, 3, 4, 5, 6, 7, 8, 9)
|
|
|
|
}
|