...
1 package buffer
2
3 import (
4 "bytes"
5 "testing"
6 )
7
8 func TestAppendByte(t *testing.T) {
9 var b Buffer
10 var want []byte
11
12 for i := 0; i < 1000; i++ {
13 b.AppendByte(1)
14 b.AppendByte(2)
15 want = append(want, 1, 2)
16 }
17
18 got := b.BuildBytes()
19 if !bytes.Equal(got, want) {
20 t.Errorf("BuildBytes() = %v; want %v", got, want)
21 }
22 }
23
24 func TestAppendBytes(t *testing.T) {
25 var b Buffer
26 var want []byte
27
28 for i := 0; i < 1000; i++ {
29 b.AppendBytes([]byte{1, 2})
30 want = append(want, 1, 2)
31 }
32
33 got := b.BuildBytes()
34 if !bytes.Equal(got, want) {
35 t.Errorf("BuildBytes() = %v; want %v", got, want)
36 }
37 }
38
39 func TestAppendString(t *testing.T) {
40 var b Buffer
41 var want []byte
42
43 s := "test"
44 for i := 0; i < 1000; i++ {
45 b.AppendString(s)
46 want = append(want, s...)
47 }
48
49 got := b.BuildBytes()
50 if !bytes.Equal(got, want) {
51 t.Errorf("BuildBytes() = %v; want %v", got, want)
52 }
53 }
54
55 func TestDumpTo(t *testing.T) {
56 var b Buffer
57 var want []byte
58
59 s := "test"
60 for i := 0; i < 1000; i++ {
61 b.AppendBytes([]byte(s))
62 want = append(want, s...)
63 }
64
65 out := &bytes.Buffer{}
66 n, err := b.DumpTo(out)
67 if err != nil {
68 t.Errorf("DumpTo() error: %v", err)
69 }
70
71 got := out.Bytes()
72 if !bytes.Equal(got, want) {
73 t.Errorf("DumpTo(): got %v; want %v", got, want)
74 }
75
76 if n != len(want) {
77 t.Errorf("DumpTo() = %v; want %v", n, len(want))
78 }
79 }
80
81 func TestReadCloser(t *testing.T) {
82 var b Buffer
83 var want []byte
84
85 s := "test"
86 for i := 0; i < 1000; i++ {
87 b.AppendBytes([]byte(s))
88 want = append(want, s...)
89 }
90
91 out := &bytes.Buffer{}
92 rc := b.ReadCloser()
93 n, err := out.ReadFrom(rc)
94 if err != nil {
95 t.Errorf("ReadCloser() error: %v", err)
96 }
97 rc.Close()
98
99 got := out.Bytes()
100 if !bytes.Equal(got, want) {
101 t.Errorf("DumpTo(): got %v; want %v", got, want)
102 }
103
104 if n != int64(len(want)) {
105 t.Errorf("DumpTo() = %v; want %v", n, len(want))
106 }
107 }
108
View as plain text