-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbounded_buffer_test.go
More file actions
132 lines (121 loc) · 3.21 KB
/
bounded_buffer_test.go
File metadata and controls
132 lines (121 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package hostlib
import (
"testing"
)
func TestBoundedBuffer_Write(t *testing.T) {
t.Run("writes within limit", func(t *testing.T) {
buf := NewBoundedBuffer(100)
n, err := buf.Write([]byte("hello"))
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if n != 5 {
t.Errorf("Write() = %d, want 5", n)
}
if buf.String() != "hello" {
t.Errorf("String() = %q, want %q", buf.String(), "hello")
}
if buf.Truncated {
t.Error("Truncated should be false")
}
})
t.Run("truncates at limit", func(t *testing.T) {
buf := NewBoundedBuffer(10)
n, err := buf.Write([]byte("hello world"))
if err != nil {
t.Errorf("unexpected error: %v", err)
}
// Should report writing all 11 bytes to satisfy io.Writer contract
if n != 11 {
t.Errorf("Write() = %d, want 11", n)
}
// But only first 10 should be in buffer
if buf.String() != "hello worl" {
t.Errorf("String() = %q, want %q", buf.String(), "hello worl")
}
if !buf.Truncated {
t.Error("Truncated should be true")
}
})
t.Run("multiple writes truncate", func(t *testing.T) {
buf := NewBoundedBuffer(10)
buf.Write([]byte("12345"))
buf.Write([]byte("67890"))
n, err := buf.Write([]byte("XXXXX"))
if err != nil {
t.Errorf("unexpected error: %v", err)
}
// Should report writing all bytes
if n != 5 {
t.Errorf("Write() = %d, want 5", n)
}
// But buffer should only have first 10
if buf.String() != "1234567890" {
t.Errorf("String() = %q, want %q", buf.String(), "1234567890")
}
if !buf.Truncated {
t.Error("Truncated should be true")
}
})
t.Run("partial write at boundary", func(t *testing.T) {
buf := NewBoundedBuffer(8)
buf.Write([]byte("12345"))
n, err := buf.Write([]byte("67890"))
if err != nil {
t.Errorf("unexpected error: %v", err)
}
// Should report writing all 5 bytes
if n != 5 {
t.Errorf("Write() = %d, want 5", n)
}
// But buffer should only have 8
if buf.String() != "12345678" {
t.Errorf("String() = %q, want %q", buf.String(), "12345678")
}
if !buf.Truncated {
t.Error("Truncated should be true")
}
})
}
func TestBoundedBuffer_Len(t *testing.T) {
buf := NewBoundedBuffer(100)
buf.Write([]byte("hello"))
if buf.Len() != 5 {
t.Errorf("Len() = %d, want 5", buf.Len())
}
}
func TestBoundedBuffer_Bytes(t *testing.T) {
buf := NewBoundedBuffer(100)
buf.Write([]byte("hello"))
got := buf.Bytes()
want := []byte("hello")
if string(got) != string(want) {
t.Errorf("Bytes() = %q, want %q", got, want)
}
}
func TestBoundedBuffer_Reset(t *testing.T) {
buf := NewBoundedBuffer(5)
buf.Write([]byte("hello world"))
if !buf.Truncated {
t.Error("should be truncated before reset")
}
buf.Reset()
if buf.Truncated {
t.Error("Truncated should be false after reset")
}
if buf.Len() != 0 {
t.Errorf("Len() = %d, want 0 after reset", buf.Len())
}
if buf.String() != "" {
t.Errorf("String() = %q, want empty after reset", buf.String())
}
}
func TestDefaultConstants(t *testing.T) {
// Verify default constants are reasonable
if DefaultMaxOutputSize != 10*1024*1024 {
t.Errorf("DefaultMaxOutputSize = %d, want 10MB", DefaultMaxOutputSize)
}
if DefaultMaxRequestSize != 1*1024*1024 {
t.Errorf("DefaultMaxRequestSize = %d, want 1MB", DefaultMaxRequestSize)
}
}