123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package ioutils
- import (
- "bytes"
- "testing"
- )
- func TestFixedBufferCap(t *testing.T) {
- buf := &fixedBuffer{buf: make([]byte, 0, 5)}
- n := buf.Cap()
- if n != 5 {
- t.Fatalf("expected buffer capacity to be 5 bytes, got %d", n)
- }
- }
- func TestFixedBufferLen(t *testing.T) {
- buf := &fixedBuffer{buf: make([]byte, 0, 10)}
- buf.Write([]byte("hello"))
- l := buf.Len()
- if l != 5 {
- t.Fatalf("expected buffer length to be 5 bytes, got %d", l)
- }
- buf.Write([]byte("world"))
- l = buf.Len()
- if l != 10 {
- t.Fatalf("expected buffer length to be 10 bytes, got %d", l)
- }
- // read 5 bytes
- b := make([]byte, 5)
- buf.Read(b)
- l = buf.Len()
- if l != 5 {
- t.Fatalf("expected buffer length to be 5 bytes, got %d", l)
- }
- n, err := buf.Write([]byte("i-wont-fit"))
- if n != 0 {
- t.Fatalf("expected no bytes to be written to buffer, got %d", n)
- }
- if err != errBufferFull {
- t.Fatalf("expected errBufferFull, got %v", err)
- }
- l = buf.Len()
- if l != 5 {
- t.Fatalf("expected buffer length to still be 5 bytes, got %d", l)
- }
- buf.Reset()
- l = buf.Len()
- if l != 0 {
- t.Fatalf("expected buffer length to still be 0 bytes, got %d", l)
- }
- }
- func TestFixedBufferString(t *testing.T) {
- buf := &fixedBuffer{buf: make([]byte, 0, 10)}
- buf.Write([]byte("hello"))
- buf.Write([]byte("world"))
- out := buf.String()
- if out != "helloworld" {
- t.Fatalf("expected output to be \"helloworld\", got %q", out)
- }
- // read 5 bytes
- b := make([]byte, 5)
- buf.Read(b)
- // test that fixedBuffer.String() only returns the part that hasn't been read
- out = buf.String()
- if out != "world" {
- t.Fatalf("expected output to be \"world\", got %q", out)
- }
- }
- func TestFixedBufferWrite(t *testing.T) {
- buf := &fixedBuffer{buf: make([]byte, 0, 64)}
- n, err := buf.Write([]byte("hello"))
- if err != nil {
- t.Fatal(err)
- }
- if n != 5 {
- t.Fatalf("expected 5 bytes written, got %d", n)
- }
- if string(buf.buf[:5]) != "hello" {
- t.Fatalf("expected \"hello\", got %q", string(buf.buf[:5]))
- }
- n, err = buf.Write(bytes.Repeat([]byte{1}, 64))
- if n != 59 {
- t.Fatalf("expected 59 bytes written before buffer is full, got %d", n)
- }
- if err != errBufferFull {
- t.Fatalf("expected errBufferFull, got %v - %v", err, buf.buf[:64])
- }
- }
- func TestFixedBufferRead(t *testing.T) {
- buf := &fixedBuffer{buf: make([]byte, 0, 64)}
- if _, err := buf.Write([]byte("hello world")); err != nil {
- t.Fatal(err)
- }
- b := make([]byte, 5)
- n, err := buf.Read(b)
- if err != nil {
- t.Fatal(err)
- }
- if n != 5 {
- t.Fatalf("expected 5 bytes read, got %d - %s", n, buf.String())
- }
- if string(b) != "hello" {
- t.Fatalf("expected \"hello\", got %q", string(b))
- }
- n, err = buf.Read(b)
- if err != nil {
- t.Fatal(err)
- }
- if n != 5 {
- t.Fatalf("expected 5 bytes read, got %d", n)
- }
- if string(b) != " worl" {
- t.Fatalf("expected \" worl\", got %s", string(b))
- }
- b = b[:1]
- n, err = buf.Read(b)
- if err != nil {
- t.Fatal(err)
- }
- if n != 1 {
- t.Fatalf("expected 1 byte read, got %d - %s", n, buf.String())
- }
- if string(b) != "d" {
- t.Fatalf("expected \"d\", got %s", string(b))
- }
- }
|