Files
config/validator/not_blank_test.go
2025-12-26 14:26:55 +03:00

129 lines
3.2 KiB
Go

package validator_test
import (
"errors"
"testing"
"time"
"gitoa.ru/go-4devs/config"
"gitoa.ru/go-4devs/config/definition/option"
"gitoa.ru/go-4devs/config/validator"
"gitoa.ru/go-4devs/config/value"
)
func TestNotBlank(t *testing.T) {
t.Parallel()
for name, ca := range casesNotBlank() {
valid := validator.NotBlank
if err := valid(ca.vars, ca.value); err != nil {
t.Errorf("case: %s, expected error <nil>, got: %s", name, err)
}
if ca.empty == nil {
ca.empty = value.EmptyValue()
}
emptErr := valid(ca.vars, ca.empty)
if emptErr == nil || !errors.Is(emptErr, validator.ErrNotBlank) {
t.Errorf("case empty: %s, expect: %s, got:%v", name, validator.ErrNotBlank, emptErr)
}
}
}
type cases struct {
vars config.Option
value config.Value
empty config.Value
}
func casesNotBlank() map[string]cases {
return map[string]cases{
"any": {
vars: option.New("any", "any", nil),
value: value.New(float32(1)),
},
"array int": {
vars: option.Int("int", "array int", option.Slice),
value: value.New([]int{1}),
empty: value.New([]int{}),
},
"array int64": {
vars: option.Int64("int64", "array int64", option.Slice),
value: value.New([]int64{1}),
empty: value.New([]int64{}),
},
"array uint": {
vars: option.Uint("uint", "array uint", option.Slice),
value: value.New([]uint{1}),
empty: value.New([]uint{}),
},
"array uint64": {
vars: option.Uint64("uint64", "array uint64", option.Slice),
value: value.New([]uint64{1}),
empty: value.New([]uint64{}),
},
"array float64": {
vars: option.Float64("float64", "array float64", option.Slice),
value: value.New([]float64{0.2}),
empty: value.New([]float64{}),
},
"array bool": {
vars: option.Bool("bool", "array bool", option.Slice),
value: value.New([]bool{true, false}),
empty: value.New([]bool{}),
},
"array duration": {
vars: option.Duration("duration", "array duration", option.Slice),
value: value.New([]time.Duration{time.Second}),
empty: value.New([]time.Duration{}),
},
"array time": {
vars: option.Time("time", "array time", option.Slice),
value: value.New([]time.Time{time.Now()}),
empty: value.New([]time.Time{}),
},
"array string": {
vars: option.String("string", "array string", option.Slice),
value: value.New([]string{"value"}),
empty: value.New([]string{}),
},
"int": {
vars: option.Int("int", "int"),
value: value.New(int(1)),
},
"int64": {
vars: option.Int64("int64", "int64"),
value: value.New(int64(2)),
},
"uint": {
vars: option.Uint("uint", "uint"),
value: value.New(uint(1)),
empty: value.New([]uint{1}),
},
"uint64": {
vars: option.Uint64("uint64", "uint64"),
value: value.New(uint64(10)),
},
"float64": {
vars: option.Float64("float64", "float64"),
value: value.New(float64(.00001)),
},
"duration": {
vars: option.Duration("duration", "duration"),
value: value.New(time.Minute),
empty: value.New("same string"),
},
"time": {
vars: option.Time("time", "time"),
value: value.New(time.Now()),
},
"string": {
vars: option.String("string", "string"),
value: value.New("string"),
empty: value.New(""),
},
}
}