feat(html): add layout variant validation helper
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
8402485489
commit
f543f02cc1
2 changed files with 38 additions and 2 deletions
31
edge_test.go
31
edge_test.go
|
|
@ -400,6 +400,37 @@ func TestLayout_VariantError_Bad(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestValidateLayoutVariant_Good(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
variant string
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "valid", variant: "HCF", wantErr: false},
|
||||
{name: "invalid", variant: "HXC", wantErr: true},
|
||||
{name: "empty", variant: "", wantErr: false},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
err := ValidateLayoutVariant(tt.variant)
|
||||
if tt.wantErr {
|
||||
if err == nil {
|
||||
t.Fatalf("ValidateLayoutVariant(%q) = nil, want error", tt.variant)
|
||||
}
|
||||
if !errors.Is(err, ErrInvalidLayoutVariant) {
|
||||
t.Fatalf("ValidateLayoutVariant(%q) = %v, want ErrInvalidLayoutVariant", tt.variant, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("ValidateLayoutVariant(%q) = %v, want nil", tt.variant, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLayout_InvalidVariantMixedValidInvalid_Bad(t *testing.T) {
|
||||
ctx := NewContext()
|
||||
|
||||
|
|
|
|||
|
|
@ -98,11 +98,16 @@ func NewLayout(variant string) *Layout {
|
|||
variant: variant,
|
||||
slots: make(map[byte][]Node),
|
||||
}
|
||||
l.variantErr = validateLayoutVariant(variant)
|
||||
l.variantErr = ValidateLayoutVariant(variant)
|
||||
return l
|
||||
}
|
||||
|
||||
func validateLayoutVariant(variant string) error {
|
||||
// ValidateLayoutVariant reports whether a layout variant string contains only
|
||||
// recognised slot characters.
|
||||
//
|
||||
// It returns nil for valid variants and ErrInvalidLayoutVariant wrapped in a
|
||||
// layoutVariantError for invalid ones.
|
||||
func ValidateLayoutVariant(variant string) error {
|
||||
var invalid bool
|
||||
for i := range len(variant) {
|
||||
if _, ok := slotRegistry[variant[i]]; ok {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue