@@ -252,3 +252,58 @@ func TestListEmails(t *testing.T) {
252252 assert .Len (t , emails , 5 )
253253 assert .Greater (t , count , int64 (len (emails )))
254254}
255+
256+ func TestEmailAddressValidate (t * testing.T ) {
257+ kases := map [string ]error {
258+ "abc@gmail.com" : nil ,
259+ "132@hotmail.com" : nil ,
260+ "1-3-2@test.org" : nil ,
261+ "1.3.2@test.org" : nil ,
262+ "a_123@test.org.cn" : nil ,
263+ `first.last@iana.org` : nil ,
264+ `first!last@iana.org` : nil ,
265+ `first#last@iana.org` : nil ,
266+ `first$last@iana.org` : nil ,
267+ `first%last@iana.org` : nil ,
268+ `first&last@iana.org` : nil ,
269+ `first'last@iana.org` : nil ,
270+ `first*last@iana.org` : nil ,
271+ `first+last@iana.org` : nil ,
272+ `first/last@iana.org` : nil ,
273+ `first=last@iana.org` : nil ,
274+ `first?last@iana.org` : nil ,
275+ `first^last@iana.org` : nil ,
276+ "first`last@iana.org" : nil ,
277+ `first{last@iana.org` : nil ,
278+ `first|last@iana.org` : nil ,
279+ `first}last@iana.org` : nil ,
280+ `first~last@iana.org` : nil ,
281+ `first;last@iana.org` : ErrEmailCharIsNotSupported {`first;last@iana.org` },
282+ ".233@qq.com" : ErrEmailInvalid {".233@qq.com" },
283+ "!233@qq.com" : ErrEmailInvalid {"!233@qq.com" },
284+ "#233@qq.com" : ErrEmailInvalid {"#233@qq.com" },
285+ "$233@qq.com" : ErrEmailInvalid {"$233@qq.com" },
286+ "%233@qq.com" : ErrEmailInvalid {"%233@qq.com" },
287+ "&233@qq.com" : ErrEmailInvalid {"&233@qq.com" },
288+ "'233@qq.com" : ErrEmailInvalid {"'233@qq.com" },
289+ "*233@qq.com" : ErrEmailInvalid {"*233@qq.com" },
290+ "+233@qq.com" : ErrEmailInvalid {"+233@qq.com" },
291+ "/233@qq.com" : ErrEmailInvalid {"/233@qq.com" },
292+ "=233@qq.com" : ErrEmailInvalid {"=233@qq.com" },
293+ "?233@qq.com" : ErrEmailInvalid {"?233@qq.com" },
294+ "^233@qq.com" : ErrEmailInvalid {"^233@qq.com" },
295+ "`233@qq.com" : ErrEmailInvalid {"`233@qq.com" },
296+ "{233@qq.com" : ErrEmailInvalid {"{233@qq.com" },
297+ "|233@qq.com" : ErrEmailInvalid {"|233@qq.com" },
298+ "}233@qq.com" : ErrEmailInvalid {"}233@qq.com" },
299+ "~233@qq.com" : ErrEmailInvalid {"~233@qq.com" },
300+ ";233@qq.com" : ErrEmailCharIsNotSupported {";233@qq.com" },
301+ "Foo <foo@bar.com>" : ErrEmailCharIsNotSupported {"Foo <foo@bar.com>" },
302+ string ([]byte {0xE2 , 0x84 , 0xAA }): ErrEmailCharIsNotSupported {string ([]byte {0xE2 , 0x84 , 0xAA })},
303+ }
304+ for kase , err := range kases {
305+ t .Run (kase , func (t * testing.T ) {
306+ assert .EqualValues (t , err , ValidateEmail (kase ))
307+ })
308+ }
309+ }
0 commit comments