package video import ( "strings" "testing" ) func TestPatterns(t *testing.T) { got := Patterns() if len(got) == 0 { t.Fatal("Patterns returned no video patterns") } seen := make(map[string]struct{}, len(got)) for i, pattern := range got { if pattern.Name == "" { t.Fatalf("pattern %d has an empty name", i) } if pattern.Description == "" { t.Fatalf("pattern %q has an empty description", pattern.Name) } if !HasPattern(pattern.Name) { t.Fatalf("Patterns returned %q, but HasPattern rejected it", pattern.Name) } if _, exists := seen[pattern.Name]; exists { t.Fatalf("duplicate pattern name %q", pattern.Name) } seen[pattern.Name] = struct{}{} if i > 0 && got[i-1].Name >= pattern.Name { t.Fatalf("patterns are not sorted: %q appears before %q", got[i-1].Name, pattern.Name) } } } func TestHasPatternRejectsUnknownName(t *testing.T) { if HasPattern("not-a-pattern") { t.Fatal("HasPattern accepted an unknown pattern") } } func TestPatternRegistryKeysMatchNames(t *testing.T) { for name, pattern := range patterns { if pattern.Name != name { t.Errorf("pattern map key %q does not match pattern name %q", name, pattern.Name) } if pattern.kernelSource == "" { t.Errorf("pattern %q has empty kernel source", name) } wantDynamic := strings.HasSuffix(name, "-move") if pattern.dynamic != wantDynamic { t.Errorf("pattern %q dynamic = %t, want %t", name, pattern.dynamic, wantDynamic) } } }