github.com/sohaha/zlsgo@v1.7.13-0.20240501141223-10dd1a906f76/zvalid/valid_test.go (about) 1 package zvalid 2 3 import ( 4 "strings" 5 "testing" 6 "time" 7 8 "github.com/sohaha/zlsgo" 9 ) 10 11 func TestValidRule(tt *testing.T) { 12 t := zlsgo.NewTest(tt) 13 v := Text("a1Cb.1").Required().HasLetter().HasLower().HasUpper().HasNumber().HasSymbol().HasString("b").HasPrefix("a").HasSuffix("1").Password().StrongPassword() 14 err := v.Error() 15 t.Log(err) 16 t.Equal(true, v.Ok()) 17 } 18 19 func TestValidNew(tt *testing.T) { 20 var err error 21 var str string 22 t := zlsgo.NewTest(tt) 23 24 valid := New() 25 validObj := valid 26 err = valid.Error() 27 t.Equal(ErrNoValidationValueSet, err) 28 tt.Log(str, err) 29 30 validObj.SetAlias("测试 1") 31 verifi := validObj.Verifi("test1", "测试1") 32 v := verifi.valid() 33 34 t.Equal(nil, v.err) 35 tt.Log(v.value, v.err) 36 37 test2 := validObj.Verifi("", "测试2").Required("Test2") 38 tt.Log("test2 queue", test2.queue.Len()) 39 v = test2.valid() 40 t.Equal(true, v.Error() != nil) 41 tt.Log(v.Value(), err) 42 43 v = valid.valid() 44 t.Equal(ErrNoValidationValueSet, v.Error()) 45 tt.Log(v.value, v.err, v.setRawValue) 46 47 test3 := validObj.IsNumber().Verifi("test3", "测试3") 48 v = test3.valid() 49 tt.Log("test3 queue", test3.queue.Len()) 50 t.Equal(true, v.Error() != nil) 51 t.Equal(v.value, test3.Value()) 52 t.Equal(v.Error(), test3.Error()) 53 tt.Log(v.value, v.err) 54 tt.Log(test3.Value(), test3.Error()) 55 56 test4 := validObj.Verifi("", "测试4").Customize(func(rawValue string, err error) (newValue string, newErr error) { 57 newValue = "test4" 58 tt.Log("重置值") 59 return 60 }) 61 62 str, err = test4.String() 63 tt.Log("test4 queue", test4.queue.Len()) 64 t.Equal(nil, err) 65 tt.Log(str, err) 66 67 } 68 69 func TestInt(t *testing.T) { 70 tt := zlsgo.NewTest(t) 71 i, err := Int(64).MaxInt(60).Int() 72 tt.Equal(true, err != nil) 73 t.Log(err) 74 t.Log(i) 75 76 i, err = Int(6).MaxInt(60).Int() 77 tt.EqualNil(err) 78 t.Log(i) 79 } 80 81 func TestFloat64(t *testing.T) { 82 tt := zlsgo.NewTest(t) 83 i, err := Int(6).MaxInt(60).Float64() 84 tt.EqualNil(err) 85 t.Log(i) 86 } 87 88 func TestBool(t *testing.T) { 89 tt := zlsgo.NewTest(t) 90 b, err := Text("true").Bool() 91 tt.EqualNil(err) 92 tt.Equal(true, b) 93 b, err = Text("0").Bool() 94 tt.EqualNil(err) 95 tt.Equal(false, b) 96 } 97 98 func TestSplit(t *testing.T) { 99 tt := zlsgo.NewTest(t) 100 b, err := Text("1,2,3,4,5").Split(",") 101 tt.EqualNil(err) 102 t.Log(b) 103 tt.Equal(5, len(b)) 104 } 105 106 func TestPassword(t *testing.T) { 107 var err error 108 tt := zlsgo.NewTest(t) 109 110 err = New().Verifi("123aA.").Password().Error() 111 tt.EqualNil(err) 112 err = New().Verifi("a", "pass2").Password().Error() 113 tt.Equal(true, err != nil) 114 tt.Log(err) 115 err = New().Verifi("").Password().Error() 116 tt.Equal(true, err != nil) 117 tt.Log(err) 118 119 err = New().Verifi("123aA.").StrongPassword().Error() 120 tt.EqualNil(err) 121 err = New().Verifi("123aA").StrongPassword().Error() 122 tt.Equal(true, err != nil) 123 err = New().Verifi("").StrongPassword().Error() 124 tt.Equal(true, err != nil) 125 126 now := time.Now() 127 str, err := New().Verifi(`123`).EncryptPassword().String() 128 tt.EqualNil(err) 129 t.Log(str) 130 t.Log("time", time.Since(now).Seconds()) 131 132 now = time.Now() 133 str, err = New().Verifi(`123`).CheckPassword(str).String() 134 tt.EqualNil(err) 135 t.Log(str) 136 t.Log("time", time.Since(now).Seconds()) 137 138 now = time.Now() 139 str, err = New().Verifi(`1231`).CheckPassword(str).String() 140 t.Log(str, err) 141 t.Log("time", time.Since(now).Seconds()) 142 143 now = time.Now() 144 str, err = New().Verifi(`123`).EncryptPassword(14).String() 145 tt.EqualNil(err) 146 t.Log(str) 147 t.Log("time", time.Since(now).Seconds()) 148 149 now = time.Now() 150 str, err = New().Verifi(`123`).EncryptPassword(4).String() 151 tt.EqualNil(err) 152 t.Log(str) 153 t.Log("time", time.Since(now).Seconds()) 154 } 155 156 func BenchmarkStr(b *testing.B) { 157 for i := 0; i < b.N; i++ { 158 s := "test" 159 if !strings.HasPrefix(s, "t") { 160 b.Fatal() 161 } 162 } 163 } 164 165 func BenchmarkStr2(b *testing.B) { 166 for i := 0; i < b.N; i++ { 167 s := "test" 168 if ok := Text(s).HasPrefix("t").Ok(); !ok { 169 b.Fatal() 170 } 171 } 172 }