Skip to content

Commit f3f762f

Browse files
refact: Adjust tests to conform to project standards
Co-authored-by: Suyash Kumar <suyashkumar2003@gmail.com>
1 parent d93750d commit f3f762f

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

pkg/dicomio/reader_test.go

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,80 @@ package dicomio
33
import (
44
"bufio"
55
"encoding/binary"
6+
"errors"
7+
"io"
68
"strings"
79
"testing"
810
)
911

1012
func TestReader_PeekAtMost(t *testing.T) {
11-
buf := bufio.NewReaderSize(strings.NewReader("abcdefghijklmnop"), 16)
12-
r := NewReader(buf, binary.LittleEndian, 0)
13-
14-
if s, err := r.PeekAtMost(3); string(s) != "abc" || err != nil {
15-
t.Fatalf("want %q got %q, err=%v", "abc", string(s), err)
13+
tests := []struct {
14+
name string
15+
data string
16+
peekCount int
17+
wantData string
18+
wantErr error
19+
}{
20+
{
21+
name: "peek_valid_count_within_buffer",
22+
data: "abcdefghijklmnop",
23+
peekCount: 3,
24+
wantData: "abc",
25+
wantErr: nil,
26+
},
27+
{
28+
name: "peek_zero_bytes",
29+
data: "abcdefghijklmnop",
30+
peekCount: 0,
31+
wantData: "",
32+
wantErr: nil,
33+
},
34+
{
35+
name: "peek_negative_count_returns_error",
36+
data: "abcdefghijklmnop",
37+
peekCount: -1,
38+
wantData: "",
39+
wantErr: bufio.ErrNegativeCount,
40+
},
41+
{
42+
name: "peek_count_larger_than_available_data",
43+
data: "abcdefghijklmnop",
44+
peekCount: 32,
45+
wantData: "abcdefghijklmnop",
46+
wantErr: nil,
47+
},
1648
}
1749

18-
if s, err := r.PeekAtMost(0); len(s) != 0 || err != nil {
19-
t.Fatalf("want %d got %d, err=%v", 0, len(s), err)
20-
}
50+
for _, tt := range tests {
51+
t.Run(tt.name, func(t *testing.T) {
52+
buf := bufio.NewReaderSize(strings.NewReader(tt.data), 16)
53+
r := NewReader(buf, binary.LittleEndian, 0)
2154

22-
if _, err := r.PeekAtMost(-1); err != bufio.ErrNegativeCount {
23-
t.Fatalf("want ErrNegativeCount got %v", err)
24-
}
55+
data, err := r.PeekAtMost(tt.peekCount)
56+
57+
if !errors.Is(err, tt.wantErr) {
58+
t.Errorf("got error %v, want %v", err, tt.wantErr)
59+
}
2560

26-
if s, err := r.PeekAtMost(32); string(s) != "abcdefghijklmnop" || err != nil {
27-
t.Fatalf("want %q, without error, got %q, err=%v", "abcdefghijklmnop", string(s), err)
61+
if string(data) != tt.wantData {
62+
t.Errorf("got data %q, want %q", string(data), tt.wantData)
63+
}
64+
})
2865
}
66+
}
67+
68+
func TestReader_PeekAtMost_AfterConsumingAllData(t *testing.T) {
69+
buf := bufio.NewReaderSize(strings.NewReader("abcdefghijklmnop"), 16)
70+
r := NewReader(buf, binary.LittleEndian, 0)
2971

72+
// Consume all data
3073
n, err := r.in.Read(make([]byte, 16))
3174
if n != 16 || err != nil {
32-
t.Fatalf("want 16 bytes, without error, got %d bytes, err=%v", n, err)
75+
t.Fatalf("failed to consume all data: got %d bytes, err=%v", n, err)
3376
}
34-
35-
if s, err := r.PeekAtMost(1); len(s) == 0 && err == nil {
36-
t.Fatalf("want %d got %d, err=%v", 1, len(s), err)
77+
// Now try to peek - should return empty slice with EOF error
78+
data, err := r.PeekAtMost(1)
79+
if len(data) != 0 || !errors.Is(err, io.EOF) {
80+
t.Errorf("got len=%d, err=%v, want len=0, err=EOF", len(data), err)
3781
}
38-
3982
}

0 commit comments

Comments
 (0)