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  }