-
Notifications
You must be signed in to change notification settings - Fork 2
/
strfmt_validator_test.go
76 lines (67 loc) · 1.49 KB
/
strfmt_validator_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package validator
import (
"context"
"fmt"
"reflect"
"testing"
"github.com/go-courier/reflectx/typesutil"
"github.com/stretchr/testify/require"
)
func ExampleNewRegexpStrfmtValidator() {
AlphaValidator := NewRegexpStrfmtValidator("^[a-zA-Z]+$", "alpha")
fmt.Println(AlphaValidator.Validate("a"))
fmt.Println(AlphaValidator.Validate("1"))
// Output:
// <nil>
// alpha ^[a-zA-Z]+$ not match 1
}
func TestStrfmtValidator_Validate(t *testing.T) {
cases := []struct {
values []interface{}
validator *StrfmtValidator
}{
{
[]interface{}{
"abc",
"a",
"c",
},
NewRegexpStrfmtValidator("^[a-zA-Z]+$", "alpha"),
},
}
for _, c := range cases {
for _, v := range c.values {
t.Run(fmt.Sprintf("%s validate %s", c.validator, v), func(t *testing.T) {
f := NewValidatorFactory()
f.Register(c.validator)
validator, _ := f.Compile(context.Background(), []byte("@alpha"), typesutil.FromRType(reflect.TypeOf("")), nil)
err := validator.Validate(v)
require.NoError(t, err)
})
}
}
}
func TestStrfmtValidator_ValidateFailed(t *testing.T) {
cases := []struct {
values []interface{}
validator *StrfmtValidator
}{
{
[]interface{}{
1,
"1",
"2",
"3",
},
NewRegexpStrfmtValidator("^[a-zA-Z]+$", "alpha"),
},
}
for _, c := range cases {
for _, v := range c.values {
t.Run(fmt.Sprintf("%s validate failed %s", c.validator, v), func(t *testing.T) {
err := c.validator.Validate(v)
require.Error(t, err)
})
}
}
}