@@ -31,117 +31,122 @@ func TestTranslations(t *testing.T) {
3131 }
3232
3333 type Test struct {
34- Inner Inner
35- RequiredString string `validate:"required"`
36- RequiredNumber int `validate:"required"`
37- RequiredMultiple []string `validate:"required"`
38- LenString string `validate:"len=1"`
39- LenNumber float64 `validate:"len=1113.00"`
40- LenMultiple []string `validate:"len=7"`
41- MinString string `validate:"min=1"`
42- MinNumber float64 `validate:"min=1113.00"`
43- MinMultiple []string `validate:"min=7"`
44- MaxString string `validate:"max=3"`
45- MaxNumber float64 `validate:"max=1113.00"`
46- MaxMultiple []string `validate:"max=7"`
47- EqString string `validate:"eq=3"`
48- EqNumber float64 `validate:"eq=2.33"`
49- EqMultiple []string `validate:"eq=7"`
50- NeString string `validate:"ne="`
51- NeNumber float64 `validate:"ne=0.00"`
52- NeMultiple []string `validate:"ne=0"`
53- LtString string `validate:"lt=3"`
54- LtNumber float64 `validate:"lt=5.56"`
55- LtMultiple []string `validate:"lt=2"`
56- LtTime time.Time `validate:"lt"`
57- LteString string `validate:"lte=3"`
58- LteNumber float64 `validate:"lte=5.56"`
59- LteMultiple []string `validate:"lte=2"`
60- LteTime time.Time `validate:"lte"`
61- GtString string `validate:"gt=3"`
62- GtNumber float64 `validate:"gt=5.56"`
63- GtMultiple []string `validate:"gt=2"`
64- GtTime time.Time `validate:"gt"`
65- GteString string `validate:"gte=3"`
66- GteNumber float64 `validate:"gte=5.56"`
67- GteMultiple []string `validate:"gte=2"`
68- GteTime time.Time `validate:"gte"`
69- EqFieldString string `validate:"eqfield=MaxString"`
70- EqCSFieldString string `validate:"eqcsfield=Inner.EqCSFieldString"`
71- NeCSFieldString string `validate:"necsfield=Inner.NeCSFieldString"`
72- GtCSFieldString string `validate:"gtcsfield=Inner.GtCSFieldString"`
73- GteCSFieldString string `validate:"gtecsfield=Inner.GteCSFieldString"`
74- LtCSFieldString string `validate:"ltcsfield=Inner.LtCSFieldString"`
75- LteCSFieldString string `validate:"ltecsfield=Inner.LteCSFieldString"`
76- NeFieldString string `validate:"nefield=EqFieldString"`
77- GtFieldString string `validate:"gtfield=MaxString"`
78- GteFieldString string `validate:"gtefield=MaxString"`
79- LtFieldString string `validate:"ltfield=MaxString"`
80- LteFieldString string `validate:"ltefield=MaxString"`
81- AlphaString string `validate:"alpha"`
82- AlphanumString string `validate:"alphanum"`
83- NumericString string `validate:"numeric"`
84- NumberString string `validate:"number"`
85- HexadecimalString string `validate:"hexadecimal"`
86- HexColorString string `validate:"hexcolor"`
87- RGBColorString string `validate:"rgb"`
88- RGBAColorString string `validate:"rgba"`
89- HSLColorString string `validate:"hsl"`
90- HSLAColorString string `validate:"hsla"`
91- Email string `validate:"email"`
92- URL string `validate:"url"`
93- URI string `validate:"uri"`
94- Base64 string `validate:"base64"`
95- Contains string `validate:"contains=purpose"`
96- ContainsAny string `validate:"containsany=!@#$"`
97- Excludes string `validate:"excludes=text"`
98- ExcludesAll string `validate:"excludesall=!@#$"`
99- ExcludesRune string `validate:"excludesrune=☻"`
100- ISBN string `validate:"isbn"`
101- ISBN10 string `validate:"isbn10"`
102- ISBN13 string `validate:"isbn13"`
103- UUID string `validate:"uuid"`
104- UUID3 string `validate:"uuid3"`
105- UUID4 string `validate:"uuid4"`
106- UUID5 string `validate:"uuid5"`
107- ASCII string `validate:"ascii"`
108- PrintableASCII string `validate:"printascii"`
109- MultiByte string `validate:"multibyte"`
110- DataURI string `validate:"datauri"`
111- Latitude string `validate:"latitude"`
112- Longitude string `validate:"longitude"`
113- SSN string `validate:"ssn"`
114- IP string `validate:"ip"`
115- IPv4 string `validate:"ipv4"`
116- IPv6 string `validate:"ipv6"`
117- CIDR string `validate:"cidr"`
118- CIDRv4 string `validate:"cidrv4"`
119- CIDRv6 string `validate:"cidrv6"`
120- TCPAddr string `validate:"tcp_addr"`
121- TCPAddrv4 string `validate:"tcp4_addr"`
122- TCPAddrv6 string `validate:"tcp6_addr"`
123- UDPAddr string `validate:"udp_addr"`
124- UDPAddrv4 string `validate:"udp4_addr"`
125- UDPAddrv6 string `validate:"udp6_addr"`
126- IPAddr string `validate:"ip_addr"`
127- IPAddrv4 string `validate:"ip4_addr"`
128- IPAddrv6 string `validate:"ip6_addr"`
129- UinxAddr string `validate:"unix_addr"` // can't fail from within Go's net package currently, but maybe in the future
130- MAC string `validate:"mac"`
131- IsColor string `validate:"iscolor"`
132- StrPtrMinLen * string `validate:"min=10"`
133- StrPtrMaxLen * string `validate:"max=1"`
134- StrPtrLen * string `validate:"len=2"`
135- StrPtrLt * string `validate:"lt=1"`
136- StrPtrLte * string `validate:"lte=1"`
137- StrPtrGt * string `validate:"gt=10"`
138- StrPtrGte * string `validate:"gte=10"`
139- OneOfString string `validate:"oneof=red green"`
140- OneOfInt int `validate:"oneof=5 63"`
141- JsonString string `validate:"json"`
142- LowercaseString string `validate:"lowercase"`
143- UppercaseString string `validate:"uppercase"`
144- Datetime string `validate:"datetime=2006-01-02"`
34+ Inner Inner
35+ RequiredString string `validate:"required"`
36+ RequiredNumber int `validate:"required"`
37+ RequiredMultiple []string `validate:"required"`
38+ LenString string `validate:"len=1"`
39+ LenNumber float64 `validate:"len=1113.00"`
40+ LenMultiple []string `validate:"len=7"`
41+ MinString string `validate:"min=1"`
42+ MinNumber float64 `validate:"min=1113.00"`
43+ MinMultiple []string `validate:"min=7"`
44+ MaxString string `validate:"max=3"`
45+ MaxNumber float64 `validate:"max=1113.00"`
46+ MaxMultiple []string `validate:"max=7"`
47+ EqString string `validate:"eq=3"`
48+ EqNumber float64 `validate:"eq=2.33"`
49+ EqMultiple []string `validate:"eq=7"`
50+ NeString string `validate:"ne="`
51+ NeNumber float64 `validate:"ne=0.00"`
52+ NeMultiple []string `validate:"ne=0"`
53+ LtString string `validate:"lt=3"`
54+ LtNumber float64 `validate:"lt=5.56"`
55+ LtMultiple []string `validate:"lt=2"`
56+ LtTime time.Time `validate:"lt"`
57+ LteString string `validate:"lte=3"`
58+ LteNumber float64 `validate:"lte=5.56"`
59+ LteMultiple []string `validate:"lte=2"`
60+ LteTime time.Time `validate:"lte"`
61+ GtString string `validate:"gt=3"`
62+ GtNumber float64 `validate:"gt=5.56"`
63+ GtMultiple []string `validate:"gt=2"`
64+ GtTime time.Time `validate:"gt"`
65+ GteString string `validate:"gte=3"`
66+ GteNumber float64 `validate:"gte=5.56"`
67+ GteMultiple []string `validate:"gte=2"`
68+ GteTime time.Time `validate:"gte"`
69+ EqFieldString string `validate:"eqfield=MaxString"`
70+ EqCSFieldString string `validate:"eqcsfield=Inner.EqCSFieldString"`
71+ NeCSFieldString string `validate:"necsfield=Inner.NeCSFieldString"`
72+ GtCSFieldString string `validate:"gtcsfield=Inner.GtCSFieldString"`
73+ GteCSFieldString string `validate:"gtecsfield=Inner.GteCSFieldString"`
74+ LtCSFieldString string `validate:"ltcsfield=Inner.LtCSFieldString"`
75+ LteCSFieldString string `validate:"ltecsfield=Inner.LteCSFieldString"`
76+ NeFieldString string `validate:"nefield=EqFieldString"`
77+ GtFieldString string `validate:"gtfield=MaxString"`
78+ GteFieldString string `validate:"gtefield=MaxString"`
79+ LtFieldString string `validate:"ltfield=MaxString"`
80+ LteFieldString string `validate:"ltefield=MaxString"`
81+ AlphaString string `validate:"alpha"`
82+ AlphanumString string `validate:"alphanum"`
83+ AlphanumUnicodeString string `validate:"alphanumunicode"`
84+ AlphaUnicodeString string `validate:"alphaunicode"`
85+ NumericString string `validate:"numeric"`
86+ NumberString string `validate:"number"`
87+ HexadecimalString string `validate:"hexadecimal"`
88+ HexColorString string `validate:"hexcolor"`
89+ RGBColorString string `validate:"rgb"`
90+ RGBAColorString string `validate:"rgba"`
91+ HSLColorString string `validate:"hsl"`
92+ HSLAColorString string `validate:"hsla"`
93+ Email string `validate:"email"`
94+ URL string `validate:"url"`
95+ URI string `validate:"uri"`
96+ Base64 string `validate:"base64"`
97+ Contains string `validate:"contains=purpose"`
98+ ContainsAny string `validate:"containsany=!@#$"`
99+ ContainsRune string `validate:"containsrune=☻"`
100+ Excludes string `validate:"excludes=text"`
101+ ExcludesAll string `validate:"excludesall=!@#$"`
102+ ExcludesRune string `validate:"excludesrune=☻"`
103+ EndsWith string `validate:"endswith=end"`
104+ StartsWith string `validate:"startswith=start"`
105+ ISBN string `validate:"isbn"`
106+ ISBN10 string `validate:"isbn10"`
107+ ISBN13 string `validate:"isbn13"`
108+ UUID string `validate:"uuid"`
109+ UUID3 string `validate:"uuid3"`
110+ UUID4 string `validate:"uuid4"`
111+ UUID5 string `validate:"uuid5"`
112+ ASCII string `validate:"ascii"`
113+ PrintableASCII string `validate:"printascii"`
114+ MultiByte string `validate:"multibyte"`
115+ DataURI string `validate:"datauri"`
116+ Latitude string `validate:"latitude"`
117+ Longitude string `validate:"longitude"`
118+ SSN string `validate:"ssn"`
119+ IP string `validate:"ip"`
120+ IPv4 string `validate:"ipv4"`
121+ IPv6 string `validate:"ipv6"`
122+ CIDR string `validate:"cidr"`
123+ CIDRv4 string `validate:"cidrv4"`
124+ CIDRv6 string `validate:"cidrv6"`
125+ TCPAddr string `validate:"tcp_addr"`
126+ TCPAddrv4 string `validate:"tcp4_addr"`
127+ TCPAddrv6 string `validate:"tcp6_addr"`
128+ UDPAddr string `validate:"udp_addr"`
129+ UDPAddrv4 string `validate:"udp4_addr"`
130+ UDPAddrv6 string `validate:"udp6_addr"`
131+ IPAddr string `validate:"ip_addr"`
132+ IPAddrv4 string `validate:"ip4_addr"`
133+ IPAddrv6 string `validate:"ip6_addr"`
134+ UinxAddr string `validate:"unix_addr"` // can't fail from within Go's net package currently, but maybe in the future
135+ MAC string `validate:"mac"`
136+ IsColor string `validate:"iscolor"`
137+ StrPtrMinLen * string `validate:"min=10"`
138+ StrPtrMaxLen * string `validate:"max=1"`
139+ StrPtrLen * string `validate:"len=2"`
140+ StrPtrLt * string `validate:"lt=1"`
141+ StrPtrLte * string `validate:"lte=1"`
142+ StrPtrGt * string `validate:"gt=10"`
143+ StrPtrGte * string `validate:"gte=10"`
144+ OneOfString string `validate:"oneof=red green"`
145+ OneOfInt int `validate:"oneof=5 63"`
146+ JsonString string `validate:"json"`
147+ LowercaseString string `validate:"lowercase"`
148+ UppercaseString string `validate:"uppercase"`
149+ Datetime string `validate:"datetime=2006-01-02"`
145150 }
146151
147152 var test Test
@@ -172,13 +177,18 @@ func TestTranslations(t *testing.T) {
172177
173178 test .AlphaString = "abc3"
174179 test .AlphanumString = "abc3!"
180+ test .AlphanumUnicodeString = "abc3啊!"
181+ test .AlphaUnicodeString = "abc3啊"
175182 test .NumericString = "12E.00"
176183 test .NumberString = "12E"
177184
178185 test .Excludes = "this is some test text"
179186 test .ExcludesAll = "This is Great!"
180187 test .ExcludesRune = "Love it ☻"
181188
189+ test .EndsWith = "this is some test text"
190+ test .StartsWith = "this is some test text"
191+
182192 test .ASCII = "カタカナ"
183193 test .PrintableASCII = "カタカナ"
184194
@@ -329,6 +339,14 @@ func TestTranslations(t *testing.T) {
329339 ns : "Test.ISBN13" ,
330340 expected : "ISBN13必须是一个有效的ISBN-13编号" ,
331341 },
342+ {
343+ ns : "Test.EndsWith" ,
344+ expected : "EndsWith必须以文本'end'结尾" ,
345+ },
346+ {
347+ ns : "Test.StartsWith" ,
348+ expected : "StartsWith必须以文本'start'开头" ,
349+ },
332350 {
333351 ns : "Test.Excludes" ,
334352 expected : "Excludes不能包含文本'text'" ,
@@ -341,6 +359,10 @@ func TestTranslations(t *testing.T) {
341359 ns : "Test.ExcludesRune" ,
342360 expected : "ExcludesRune不能包含'☻'" ,
343361 },
362+ {
363+ ns : "Test.ContainsRune" ,
364+ expected : "ContainsRune必须包含字符'☻'" ,
365+ },
344366 {
345367 ns : "Test.ContainsAny" ,
346368 expected : "ContainsAny必须包含至少一个以下字符'!@#$'" ,
@@ -397,6 +419,14 @@ func TestTranslations(t *testing.T) {
397419 ns : "Test.NumericString" ,
398420 expected : "NumericString必须是一个有效的数值" ,
399421 },
422+ {
423+ ns : "Test.AlphaUnicodeString" ,
424+ expected : "AlphaUnicodeString只能包含字母和Unicode字符" ,
425+ },
426+ {
427+ ns : "Test.AlphanumUnicodeString" ,
428+ expected : "AlphanumUnicodeString只能包含字母数字和Unicode字符" ,
429+ },
400430 {
401431 ns : "Test.AlphanumString" ,
402432 expected : "AlphanumString只能包含字母和数字" ,
0 commit comments