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  }