terraform/vendor/github.com/armon/circbuf/circbuf_test.go

199 lines
3.3 KiB
Go

package circbuf
import (
"bytes"
"io"
"testing"
)
func TestBuffer_Impl(t *testing.T) {
var _ io.Writer = &Buffer{}
}
func TestBuffer_ShortWrite(t *testing.T) {
buf, err := NewBuffer(1024)
if err != nil {
t.Fatalf("err: %v", err)
}
inp := []byte("hello world")
n, err := buf.Write(inp)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(inp) {
t.Fatalf("bad: %v", n)
}
if !bytes.Equal(buf.Bytes(), inp) {
t.Fatalf("bad: %v", buf.Bytes())
}
}
func TestBuffer_FullWrite(t *testing.T) {
inp := []byte("hello world")
buf, err := NewBuffer(int64(len(inp)))
if err != nil {
t.Fatalf("err: %v", err)
}
n, err := buf.Write(inp)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(inp) {
t.Fatalf("bad: %v", n)
}
if !bytes.Equal(buf.Bytes(), inp) {
t.Fatalf("bad: %v", buf.Bytes())
}
}
func TestBuffer_LongWrite(t *testing.T) {
inp := []byte("hello world")
buf, err := NewBuffer(6)
if err != nil {
t.Fatalf("err: %v", err)
}
n, err := buf.Write(inp)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(inp) {
t.Fatalf("bad: %v", n)
}
expect := []byte(" world")
if !bytes.Equal(buf.Bytes(), expect) {
t.Fatalf("bad: %s", buf.Bytes())
}
}
func TestBuffer_HugeWrite(t *testing.T) {
inp := []byte("hello world")
buf, err := NewBuffer(3)
if err != nil {
t.Fatalf("err: %v", err)
}
n, err := buf.Write(inp)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(inp) {
t.Fatalf("bad: %v", n)
}
expect := []byte("rld")
if !bytes.Equal(buf.Bytes(), expect) {
t.Fatalf("bad: %s", buf.Bytes())
}
}
func TestBuffer_ManySmall(t *testing.T) {
inp := []byte("hello world")
buf, err := NewBuffer(3)
if err != nil {
t.Fatalf("err: %v", err)
}
for _, b := range inp {
n, err := buf.Write([]byte{b})
if err != nil {
t.Fatalf("err: %v", err)
}
if n != 1 {
t.Fatalf("bad: %v", n)
}
}
expect := []byte("rld")
if !bytes.Equal(buf.Bytes(), expect) {
t.Fatalf("bad: %v", buf.Bytes())
}
}
func TestBuffer_MultiPart(t *testing.T) {
inputs := [][]byte{
[]byte("hello world\n"),
[]byte("this is a test\n"),
[]byte("my cool input\n"),
}
total := 0
buf, err := NewBuffer(16)
if err != nil {
t.Fatalf("err: %v", err)
}
for _, b := range inputs {
total += len(b)
n, err := buf.Write(b)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(b) {
t.Fatalf("bad: %v", n)
}
}
if int64(total) != buf.TotalWritten() {
t.Fatalf("bad total")
}
expect := []byte("t\nmy cool input\n")
if !bytes.Equal(buf.Bytes(), expect) {
t.Fatalf("bad: %v", buf.Bytes())
}
}
func TestBuffer_Reset(t *testing.T) {
// Write a bunch of data
inputs := [][]byte{
[]byte("hello world\n"),
[]byte("this is a test\n"),
[]byte("my cool input\n"),
}
buf, err := NewBuffer(4)
if err != nil {
t.Fatalf("err: %v", err)
}
for _, b := range inputs {
n, err := buf.Write(b)
if err != nil {
t.Fatalf("err: %v", err)
}
if n != len(b) {
t.Fatalf("bad: %v", n)
}
}
// Reset it
buf.Reset()
// Write more data
input := []byte("hello")
n, err := buf.Write(input)
if err != nil {
t.Fatalf("err: %s", err)
}
if n != len(input) {
t.Fatalf("bad: %v", n)
}
// Test the output
expect := []byte("ello")
if !bytes.Equal(buf.Bytes(), expect) {
t.Fatalf("bad: %v", string(buf.Bytes()))
}
}