mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
package media
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestReadAllWithLimit(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
payload []byte
|
|
maxBytes int64
|
|
wantErr bool
|
|
errTooBig bool
|
|
}{
|
|
{
|
|
name: "within limit",
|
|
payload: []byte("hello"),
|
|
maxBytes: 8,
|
|
},
|
|
{
|
|
name: "over limit",
|
|
payload: []byte("0123456789"),
|
|
maxBytes: 5,
|
|
wantErr: true,
|
|
errTooBig: true,
|
|
},
|
|
{
|
|
name: "exact limit",
|
|
payload: []byte("12345"),
|
|
maxBytes: 5,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got, err := ReadAllWithLimit(bytes.NewReader(tt.payload), tt.maxBytes)
|
|
if tt.wantErr {
|
|
if err == nil {
|
|
t.Fatalf("expected error")
|
|
}
|
|
if tt.errTooBig && !errors.Is(err, ErrAssetTooLarge) {
|
|
t.Fatalf("expected ErrAssetTooLarge, got %v", err)
|
|
}
|
|
return
|
|
}
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if string(got) != string(tt.payload) {
|
|
t.Fatalf("unexpected payload: %q", string(got))
|
|
}
|
|
})
|
|
}
|
|
}
|