From 79a3aa591676f023bc7bc675c3cac42d02d4abaa Mon Sep 17 00:00:00 2001 From: John Date: Mon, 11 Mar 2019 22:58:21 +0800 Subject: [PATCH] add more unit test cases for package gvalid --- g/util/gvalid/gvalid.go | 31 ------------------- g/util/gvalid/gvalid_unit_basic_all_test.go | 12 ++++++++ g/util/gvalid/gvalid_unit_checkmap_test.go | 33 +++++++++++++++++++++ 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/g/util/gvalid/gvalid.go b/g/util/gvalid/gvalid.go index bac057aff..56948e922 100644 --- a/g/util/gvalid/gvalid.go +++ b/g/util/gvalid/gvalid.go @@ -67,35 +67,4 @@ type CustomMsg = map[string]interface{} func parseSequenceTag(tag string) (name, rule, msg string) { match, _ := gregex.MatchString(`\s*((\w+)\s*@){0,1}\s*([^#]+)\s*(#\s*(.*)){0,1}\s*`, tag) return strings.TrimSpace(match[2]), strings.TrimSpace(match[3]), strings.TrimSpace(match[5]) -} - -// 解析sequence tag为标准校验规则及自定义错误 -func parseSequenceTags(tags []string) (rules map[string]string, msgs map[string]interface{}) { - rules = make(map[string]string) - msgs = make(map[string]interface{}) - for _, tag := range tags { - name, rule, msg := parseSequenceTag(tag) - // 校验规则 - if len(name) == 0 { - continue - } - rules[name] = rule - // 错误提示 - if len(msg) > 0 { - ruleArray := strings.Split(rule, "|") - msgArray := strings.Split(msg, "|") - for k, v := range ruleArray { - if len(msgArray[k]) == 0 { - continue - } - // 关联校验会有":"符号 - array := strings.Split(v, ":") - if _, ok := msgs[name]; !ok { - msgs[name] = make(map[string]string) - } - msgs[name].(map[string]string)[strings.TrimSpace(array[0])] = strings.TrimSpace(msgArray[k]) - } - } - } - return } \ No newline at end of file diff --git a/g/util/gvalid/gvalid_unit_basic_all_test.go b/g/util/gvalid/gvalid_unit_basic_all_test.go index 3a2f3b4b6..96d9db67e 100644 --- a/g/util/gvalid/gvalid_unit_basic_all_test.go +++ b/g/util/gvalid/gvalid_unit_basic_all_test.go @@ -400,6 +400,9 @@ func Test_QQ(t *testing.T) { } func Test_Ip(t *testing.T) { + if m := gvalid.Check("10.0.0.1", "ip", nil); m != nil { + t.Error(m) + } if m := gvalid.Check("10.0.0.1", "ipv4", nil); m != nil { t.Error(m) } @@ -409,12 +412,21 @@ func Test_Ip(t *testing.T) { if m := gvalid.Check("1920.0.0.0", "ipv4", nil); m == nil { t.Error("ipv4校验失败") } + if m := gvalid.Check("1920.0.0.0", "ip", nil); m == nil { + t.Error("ipv4校验失败") + } if m := gvalid.Check("fe80::5484:7aff:fefe:9799", "ipv6", nil); m != nil { t.Error(m) } if m := gvalid.Check("fe80::5484:7aff:fefe:9799123", "ipv6", nil); m == nil { t.Error(m) } + if m := gvalid.Check("fe80::5484:7aff:fefe:9799", "ip", nil); m != nil { + t.Error(m) + } + if m := gvalid.Check("fe80::5484:7aff:fefe:9799123", "ip", nil); m == nil { + t.Error(m) + } } func Test_IPv4(t *testing.T) { diff --git a/g/util/gvalid/gvalid_unit_checkmap_test.go b/g/util/gvalid/gvalid_unit_checkmap_test.go index 2da793ea2..c83bef66c 100644 --- a/g/util/gvalid/gvalid_unit_checkmap_test.go +++ b/g/util/gvalid/gvalid_unit_checkmap_test.go @@ -7,6 +7,7 @@ package gvalid_test import ( + "github.com/gogf/gf/g/test/gtest" "github.com/gogf/gf/g/util/gvalid" "testing" ) @@ -65,3 +66,35 @@ func Test_CheckMapWithNilAndNotRequiredField(t *testing.T) { } } +func Test_Sequence(t *testing.T) { + gtest.Case(t, func() { + params := map[string]interface{} { + "passport" : "", + "password" : "123456", + "password2" : "1234567", + } + rules := []string { + "passport@required|length:6,16#账号不能为空|账号长度应当在:min到:max之间", + "password@required|length:6,16|same:password2#密码不能为空|密码长度应当在:min到:max之间|两次密码输入不相等", + "password2@required|length:6,16#", + } + err := gvalid.CheckMap(params, rules) + gtest.AssertNE(err, nil) + gtest.Assert(len(err.Map()), 2) + gtest.Assert(err.Map()["required"], "账号不能为空") + gtest.Assert(err.Map()["length"], "账号长度应当在6到16之间") + gtest.Assert(len(err.Maps()), 2) + + gtest.Assert(err.String(), "账号不能为空; 账号长度应当在6到16之间; 两次密码输入不相等") + gtest.Assert(err.Strings(), []string{"账号不能为空", "账号长度应当在6到16之间", "两次密码输入不相等"}) + + k, m := err.FirstItem() + gtest.Assert(k, "passport") + gtest.Assert(m, err.Map()) + + r, s := err.FirstRule() + gtest.Assert(r, "required") + gtest.Assert(s, "账号不能为空") + }) +} +