go/bytes2/cw_test.go

73 lines
1.6 KiB
Go

// Copyright 2012, Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package bytes2 gives you alternate implementations of functionality
// similar to go's bytes package
package bytes2
import (
"testing"
)
func TestWrite(t *testing.T) {
cw := NewChunkedWriter(5)
cw.Write([]byte("1234"))
if string(cw.Bytes()) != "1234" {
t.Errorf("Expecting 1234, received %s", cw.Bytes())
}
cw.WriteString("56")
if string(cw.Bytes()) != "123456" {
t.Errorf("Expecting 123456, received %s", cw.Bytes())
}
if cw.Len() != 6 {
t.Errorf("Expecting 6, received %d", cw.Len())
}
}
func TestTruncate(t *testing.T) {
cw := NewChunkedWriter(3)
cw.WriteString("123456789")
cw.Truncate(8)
if string(cw.Bytes()) != "12345678" {
t.Errorf("Expecting 12345678, received %s", cw.Bytes())
}
cw.Truncate(5)
if string(cw.Bytes()) != "12345" {
t.Errorf("Expecting 12345, received %s", cw.Bytes())
}
cw.Truncate(2)
if string(cw.Bytes()) != "12" {
t.Errorf("Expecting 12345, received %s", cw.Bytes())
}
cw.Reset()
if cw.Len() != 0 {
t.Errorf("Expecting 0, received %d", cw.Len())
}
}
func TestReserve(t *testing.T) {
cw := NewChunkedWriter(4)
b := cw.Reserve(2)
b[0] = '1'
b[1] = '2'
cw.WriteByte('3')
b = cw.Reserve(2)
b[0] = '4'
b[1] = '5'
if string(cw.Bytes()) != "12345" {
t.Errorf("Expecting 12345, received %s", cw.Bytes())
}
}
func TestWriteTo(t *testing.T) {
cw1 := NewChunkedWriter(4)
cw1.WriteString("123456789")
cw2 := NewChunkedWriter(5)
cw1.WriteTo(cw2)
if string(cw2.Bytes()) != "123456789" {
t.Errorf("Expecting 123456789, received %s", cw2.Bytes())
}
}