1package buffer
2
3import (
4	"bytes"
5	"testing"
6)
7
8func 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
24func 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
39func 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.AppendBytes([]byte(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
55func 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
81func 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() // Will always return nil
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