Browse code

Improve coverage of pkg/ioutils/buffer

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2017/02/28 22:11:15
Showing 1 changed files
... ...
@@ -5,6 +5,81 @@ import (
5 5
 	"testing"
6 6
 )
7 7
 
8
+func TestFixedBufferCap(t *testing.T) {
9
+	buf := &fixedBuffer{buf: make([]byte, 0, 5)}
10
+
11
+	n := buf.Cap()
12
+	if n != 5 {
13
+		t.Fatalf("expected buffer capacity to be 5 bytes, got %d", n)
14
+	}
15
+}
16
+
17
+func TestFixedBufferLen(t *testing.T) {
18
+	buf := &fixedBuffer{buf: make([]byte, 0, 10)}
19
+
20
+	buf.Write([]byte("hello"))
21
+	l := buf.Len()
22
+	if l != 5 {
23
+		t.Fatalf("expected buffer length to be 5 bytes, got %d", l)
24
+	}
25
+
26
+	buf.Write([]byte("world"))
27
+	l = buf.Len()
28
+	if l != 10 {
29
+		t.Fatalf("expected buffer length to be 10 bytes, got %d", l)
30
+	}
31
+
32
+	// read 5 bytes
33
+	b := make([]byte, 5)
34
+	buf.Read(b)
35
+
36
+	l = buf.Len()
37
+	if l != 5 {
38
+		t.Fatalf("expected buffer length to be 5 bytes, got %d", l)
39
+	}
40
+
41
+	n, err := buf.Write([]byte("i-wont-fit"))
42
+	if n != 0 {
43
+		t.Fatalf("expected no bytes to be written to buffer, got %d", n)
44
+	}
45
+	if err != errBufferFull {
46
+		t.Fatalf("expected errBufferFull, got %v", err)
47
+	}
48
+
49
+	l = buf.Len()
50
+	if l != 5 {
51
+		t.Fatalf("expected buffer length to still be 5 bytes, got %d", l)
52
+	}
53
+
54
+	buf.Reset()
55
+	l = buf.Len()
56
+	if l != 0 {
57
+		t.Fatalf("expected buffer length to still be 0 bytes, got %d", l)
58
+	}
59
+}
60
+
61
+func TestFixedBufferString(t *testing.T) {
62
+	buf := &fixedBuffer{buf: make([]byte, 0, 10)}
63
+
64
+	buf.Write([]byte("hello"))
65
+	buf.Write([]byte("world"))
66
+
67
+	out := buf.String()
68
+	if out != "helloworld" {
69
+		t.Fatalf("expected output to be \"helloworld\", got %q", out)
70
+	}
71
+
72
+	// read 5 bytes
73
+	b := make([]byte, 5)
74
+	buf.Read(b)
75
+
76
+	// test that fixedBuffer.String() only returns the part that hasn't been read
77
+	out = buf.String()
78
+	if out != "world" {
79
+		t.Fatalf("expected output to be \"world\", got %q", out)
80
+	}
81
+}
82
+
8 83
 func TestFixedBufferWrite(t *testing.T) {
9 84
 	buf := &fixedBuffer{buf: make([]byte, 0, 64)}
10 85
 	n, err := buf.Write([]byte("hello"))