Files
go-mxl-player/internal/source/errors_test.go
T
2026-08-27 00:43:08 +03:00

55 lines
1.2 KiB
Go

package source
import (
"errors"
"fmt"
"testing"
)
func TestKindOfThroughWrapping(t *testing.T) {
base := errors.New("producer disappeared")
wrapped := wrapError("read video", ErrorKindUnavailable, base)
outer := fmt.Errorf("worker failed: %w", wrapped)
if got := KindOf(outer); got != ErrorKindUnavailable {
t.Fatalf("KindOf() = %v, want %v", got, ErrorKindUnavailable)
}
if !errors.Is(outer, base) {
t.Fatal("wrapped error does not preserve its cause")
}
if wrapError("nil", 0, nil) != nil {
t.Fatal("nil error is not wrapped as nil")
}
}
func TestKindOfUnknown(t *testing.T) {
if got := KindOf(errors.New("ordinary error")); got != ErrorKindUnknown {
t.Fatalf("KindOf() = %v, want %v", got, ErrorKindUnknown)
}
}
func TestSourceErrorWithOperation(t *testing.T) {
err := &SourceError{
Op: "read video",
Kind: ErrorKindTemporary,
Err: errors.New("timeout"),
}
const want = "read video: timeout"
if got := err.Error(); got != want {
t.Fatalf("Error() = %q, want %q", got, want)
}
}
func TestSourceErrorWithoutOperation(t *testing.T) {
err := &SourceError{
Kind: ErrorKindTemporary,
Err: errors.New("timeout"),
}
const want = "timeout"
if got := err.Error(); got != want {
t.Fatalf("Error() = %q, want %q", got, want)
}
}