47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
|
package buffer // import "github.com/tdewolff/parse/buffer"
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/tdewolff/test"
|
||
|
)
|
||
|
|
||
|
func TestWriter(t *testing.T) {
|
||
|
w := NewWriter(make([]byte, 0, 3))
|
||
|
|
||
|
test.That(t, w.Len() == 0, "buffer must initially have zero length")
|
||
|
|
||
|
n, _ := w.Write([]byte("abc"))
|
||
|
test.That(t, n == 3, "first write must write 3 characters")
|
||
|
test.Bytes(t, w.Bytes(), []byte("abc"), "first write must match 'abc'")
|
||
|
test.That(t, w.Len() == 3, "buffer must have length 3 after first write")
|
||
|
|
||
|
n, _ = w.Write([]byte("def"))
|
||
|
test.That(t, n == 3, "second write must write 3 characters")
|
||
|
test.Bytes(t, w.Bytes(), []byte("abcdef"), "second write must match 'abcdef'")
|
||
|
|
||
|
w.Reset()
|
||
|
test.Bytes(t, w.Bytes(), []byte(""), "reset must match ''")
|
||
|
|
||
|
n, _ = w.Write([]byte("ghijkl"))
|
||
|
test.That(t, n == 6, "third write must write 6 characters")
|
||
|
test.Bytes(t, w.Bytes(), []byte("ghijkl"), "third write must match 'ghijkl'")
|
||
|
}
|
||
|
|
||
|
func ExampleNewWriter() {
|
||
|
w := NewWriter(make([]byte, 0, 11)) // initial buffer length is 11
|
||
|
w.Write([]byte("Lorem ipsum"))
|
||
|
fmt.Println(string(w.Bytes()))
|
||
|
// Output: Lorem ipsum
|
||
|
}
|
||
|
|
||
|
func ExampleWriter_Reset() {
|
||
|
w := NewWriter(make([]byte, 0, 11)) // initial buffer length is 10
|
||
|
w.Write([]byte("garbage that will be overwritten")) // does reallocation
|
||
|
w.Reset()
|
||
|
w.Write([]byte("Lorem ipsum"))
|
||
|
fmt.Println(string(w.Bytes()))
|
||
|
// Output: Lorem ipsum
|
||
|
}
|