Skip to content

Commit f0c13a9

Browse files
committed
test: add internal tests for parseContentRange
1 parent 3a243ff commit f0c13a9

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
//go:build test_unit
2+
3+
package audio
4+
5+
import (
6+
"net/http"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestParseContentRange(t *testing.T) {
14+
tests := []struct {
15+
name string
16+
header string
17+
wantStart int64
18+
wantEnd int64
19+
wantSize int64
20+
wantErr bool
21+
errContains string
22+
}{
23+
{
24+
name: "valid range",
25+
header: "bytes 0-511/1024",
26+
wantStart: 0,
27+
wantEnd: 511,
28+
wantSize: 1024,
29+
wantErr: false,
30+
},
31+
{
32+
name: "middle range",
33+
header: "bytes 512-1023/2048",
34+
wantStart: 512,
35+
wantEnd: 1023,
36+
wantSize: 2048,
37+
wantErr: false,
38+
},
39+
{
40+
name: "no header",
41+
header: "",
42+
wantErr: true,
43+
errContains: "no Content-Range header",
44+
},
45+
{
46+
name: "invalid format",
47+
header: "invalid format",
48+
wantErr: true,
49+
errContains: "invalid content range header",
50+
},
51+
{
52+
name: "invalid start",
53+
header: "bytes abc-511/1024",
54+
wantErr: true,
55+
errContains: "invalid content range header",
56+
},
57+
{
58+
name: "invalid end",
59+
header: "bytes 0-abc/1024",
60+
wantErr: true,
61+
errContains: "invalid content range header",
62+
},
63+
{
64+
name: "invalid size",
65+
header: "bytes 0-511/abc",
66+
wantErr: true,
67+
errContains: "invalid content range header",
68+
},
69+
}
70+
71+
for _, tt := range tests {
72+
t.Run(tt.name, func(t *testing.T) {
73+
resp := &http.Response{
74+
Header: http.Header{},
75+
}
76+
if tt.header != "" {
77+
resp.Header.Set("Content-Range", tt.header)
78+
}
79+
80+
start, end, size, err := parseContentRange(resp)
81+
82+
if tt.wantErr {
83+
require.Error(t, err)
84+
assert.Contains(t, err.Error(), tt.errContains)
85+
} else {
86+
require.NoError(t, err)
87+
assert.Equal(t, tt.wantStart, start)
88+
assert.Equal(t, tt.wantEnd, end)
89+
assert.Equal(t, tt.wantSize, size)
90+
}
91+
})
92+
}
93+
}

0 commit comments

Comments
 (0)