github.com/sohaha/zlsgo@v1.7.13-0.20240501141223-10dd1a906f76/zvalid/rule_test.go (about) 1 package zvalid 2 3 import ( 4 "testing" 5 6 "github.com/sohaha/zlsgo" 7 ) 8 9 func TestRuleIs(t *testing.T) { 10 var err error 11 tt := zlsgo.NewTest(t) 12 13 err = New().Verifi("true", "值").IsBool().Error() 14 tt.NoError(err) 15 err = New().Verifi("1true").IsBool().Error() 16 tt.Equal(true, err != nil) 17 // 空值会直接跳过验证的 18 err = New().Verifi("").IsBool().Error() 19 tt.NoError(err) 20 21 err = New().Verifi("abc").IsLetter().Error() 22 tt.NoError(err) 23 err = New().Verifi("a1").IsLetter().Error() 24 tt.Equal(true, err != nil) 25 err = New().Verifi("").IsLetter().Error() 26 tt.NoError(err) 27 28 err = New().Verifi("a").IsLower().Error() 29 tt.NoError(err) 30 err = New().Verifi("1").IsLower().Error() 31 tt.Equal(true, err != nil) 32 err = New().Verifi("").IsLower().Error() 33 tt.NoError(err) 34 35 err = New().Verifi("A").IsUpper().Error() 36 tt.NoError(err) 37 err = New().Verifi("1").IsUpper().Error() 38 tt.Equal(true, err != nil) 39 err = New().Verifi("").IsUpper().Error() 40 tt.NoError(err) 41 42 err = New().Verifi("1").IsNumber().Error() 43 tt.NoError(err) 44 err = New().Verifi("-1").IsNumber().Error() 45 tt.NoError(err) 46 err = New().Verifi("-1.11").IsNumber().Error() 47 tt.NoError(err) 48 err = New().Verifi("a1").IsNumber().Error() 49 tt.Equal(true, err != nil) 50 err = New().Verifi("").IsNumber().Error() 51 tt.NoError(err) 52 53 err = New().Verifi("1").IsInteger().Error() 54 tt.NoError(err) 55 err = New().Verifi("-1").IsInteger().Error() 56 tt.NoError(err) 57 err = New().Verifi("-1.11").IsInteger().Error() 58 tt.Equal(true, err != nil) 59 err = New().Verifi("a1").IsInteger().Error() 60 tt.Equal(true, err != nil) 61 err = New().Verifi("").IsInteger().Error() 62 tt.NoError(err) 63 64 err = New().Verifi("a1").IsLowerOrDigit().Error() 65 tt.NoError(err) 66 err = New().Verifi("A1").IsLowerOrDigit().Error() 67 tt.Equal(true, err != nil) 68 err = New().Verifi("").IsLowerOrDigit().Error() 69 tt.NoError(err) 70 71 err = New().Verifi("A1").IsUpperOrDigit().Error() 72 tt.NoError(err) 73 err = New().Verifi("a1").IsUpperOrDigit().Error() 74 tt.Equal(true, err != nil) 75 err = New().Verifi("").IsUpperOrDigit().Error() 76 tt.NoError(err) 77 78 err = New().Verifi("Abc1").IsLetterOrDigit().Error() 79 tt.NoError(err) 80 err = New().Verifi("A1.").IsLetterOrDigit().Error() 81 tt.Equal(true, err != nil) 82 err = New().Verifi("").IsLetterOrDigit().Error() 83 tt.NoError(err) 84 85 err = New().Verifi("是我呀").IsChinese().Error() 86 tt.NoError(err) 87 err = New().Verifi("A1.").IsChinese().Error() 88 tt.Equal(true, err != nil) 89 err = New().Verifi("").IsChinese().Error() 90 tt.NoError(err) 91 92 err = New().Verifi("13800138000", "手机号码").IsMobile().Error() 93 tt.NoError(err) 94 err = New().Verifi("A1.").IsMobile().Error() 95 tt.Equal(true, err != nil) 96 err = New().Verifi("").IsMobile().Error() 97 tt.NoError(err) 98 99 err = New().Verifi("seekwe@gmail.com").IsMail().Error() 100 tt.NoError(err) 101 err = New().Verifi("A1.gmail.com").IsMail().Error() 102 tt.Equal(true, err != nil) 103 err = New().Verifi("A1.@com").IsMail().Error() 104 tt.Equal(true, err != nil) 105 err = New().Verifi("A1.@").IsMail().Error() 106 tt.Equal(true, err != nil) 107 err = New().Verifi("").IsMail().Error() 108 tt.NoError(err) 109 110 err = New().Verifi("https://docs.73zls.com/zls-go/#").IsURL().Error() 111 tt.NoError(err) 112 err = New().Verifi("A1.gmail.com").IsURL().Error() 113 tt.Equal(true, err != nil) 114 err = New().Verifi("").IsURL().Error() 115 tt.NoError(err) 116 117 err = New().Verifi("112.74.213.83", "ip").IsIP().Error() 118 tt.NoError(err) 119 err = New().Verifi("1271.1").IsIP().Error() 120 tt.Equal(true, err != nil) 121 err = New().Verifi("").IsIP().Error() 122 tt.NoError(err) 123 124 err = New().Verifi(`{"name":"zlsgo"}`, "json").IsJSON().Error() 125 tt.NoError(err) 126 err = New().Verifi("test").IsJSON().Error() 127 tt.Equal(true, err != nil) 128 err = New().Verifi("").IsJSON().Error() 129 tt.NoError(err) 130 131 err = New().Verifi(`11010119900307379X`).IsChineseIDNumber().Error() 132 tt.NoError(err) 133 err = New().Verifi("test").IsChineseIDNumber().Error() 134 tt.Equal(true, err != nil) 135 err = New().Verifi("11010119900307379A").IsChineseIDNumber().Error() 136 tt.Equal(true, err != nil) 137 err = New().Verifi("").IsChineseIDNumber().Error() 138 tt.NoError(err) 139 140 err = New().Verifi(`12345`).MinLength(3).Error() 141 tt.NoError(err) 142 err = New().Verifi("12").MinLength(3).Error() 143 tt.Equal(true, err != nil) 144 err = New().Verifi("").MinLength(3).Error() 145 tt.NoError(err) 146 147 err = New().Verifi(`是我啊啊`).MinUTF8Length(3).Error() 148 tt.NoError(err) 149 err = New().Verifi("是").MinUTF8Length(3).Error() 150 tt.Equal(true, err != nil) 151 err = New().Verifi("").MinUTF8Length(3).Error() 152 tt.NoError(err) 153 154 err = New().Verifi(`123`).MaxLength(3).Error() 155 tt.NoError(err) 156 err = New().Verifi("12345").MaxLength(1).Error() 157 tt.Equal(true, err != nil) 158 err = New().Verifi("").MaxLength(3).Error() 159 tt.NoError(err) 160 161 err = New().Verifi(`是`).MaxUTF8Length(3).Error() 162 tt.NoError(err) 163 err = New().Verifi("是我啊啊").MaxUTF8Length(3).Error() 164 tt.Equal(true, err != nil) 165 err = New().Verifi("").MaxUTF8Length(3).Error() 166 tt.NoError(err) 167 168 err = New().Verifi(`4`).MinInt(3).Error() 169 tt.NoError(err) 170 err = New().Verifi("2").MinInt(3).Error() 171 tt.Equal(true, err != nil) 172 err = New().Verifi("a0").MinInt(3).Error() 173 tt.Equal(true, err != nil) 174 err = New().Verifi("").MinInt(3).Error() 175 tt.NoError(err) 176 177 err = New().Verifi(`3`).MaxInt(3).Error() 178 tt.NoError(err) 179 err = New().Verifi("4").MaxInt(3).Error() 180 tt.Equal(true, err != nil) 181 err = New().Verifi("a4").MaxInt(3).Error() 182 tt.Equal(true, err != nil) 183 err = New().Verifi("").MaxInt(3).Error() 184 tt.NoError(err) 185 186 err = New().Verifi(`3.2`).MinFloat(3.1).Error() 187 tt.NoError(err) 188 err = New().Verifi("2.9").MinFloat(3).Error() 189 tt.Equal(true, err != nil) 190 err = New().Verifi("a2.9").MinFloat(3).Error() 191 tt.Equal(true, err != nil) 192 err = New().Verifi("").MinFloat(3).Error() 193 tt.NoError(err) 194 195 err = New().Verifi(`3.1`).MaxFloat(3.1).Error() 196 tt.NoError(err) 197 err = New().Verifi("3.9").MaxFloat(3).Error() 198 tt.Equal(true, err != nil) 199 err = New().Verifi("a2.9").MaxFloat(3).Error() 200 tt.Equal(true, err != nil) 201 err = New().Verifi("").MaxFloat(3).Error() 202 tt.NoError(err) 203 204 err = New().Verifi(`1`).EnumString([]string{"1"}).Error() 205 tt.NoError(err) 206 err = New().Verifi("2").EnumString([]string{"1"}).Error() 207 tt.Equal(true, err != nil) 208 err = New().Verifi("").EnumString([]string{"1"}).Error() 209 tt.NoError(err) 210 211 err = New().Verifi(`1`).EnumInt([]int{1}).Error() 212 tt.NoError(err) 213 err = New().Verifi("2").EnumInt([]int{1}).Error() 214 tt.Equal(true, err != nil) 215 err = New().Verifi("a2").EnumInt([]int{1}).Error() 216 tt.Equal(true, err != nil) 217 err = New().Verifi("").EnumInt([]int{1}).Error() 218 tt.NoError(err) 219 220 err = New().Verifi(`1`).EnumFloat64([]float64{1.0}).Error() 221 tt.NoError(err) 222 err = New().Verifi("2").EnumFloat64([]float64{1}).Error() 223 tt.Equal(true, err != nil) 224 err = New().Verifi("a2").EnumFloat64([]float64{1}).Error() 225 tt.Equal(true, err != nil) 226 err = New().Verifi("").EnumFloat64([]float64{1}).Error() 227 tt.NoError(err) 228 229 err = New().Verifi("12345").Regex("\\d+").Error() 230 tt.NoError(err) 231 err = New().Verifi("w12345").Regex("w1\\d345").Error() 232 tt.NoError(err) 233 }