github.com/wuhuizuo/gomplate@v3.5.0+incompatible/funcs/uuid_test.go (about)

     1  package funcs
     2  
     3  import (
     4  	"net/url"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  const (
    11  	uuidV1Pattern = "^[[:xdigit:]]{8}-[[:xdigit:]]{4}-1[[:xdigit:]]{3}-[89ab][[:xdigit:]]{3}-[[:xdigit:]]{12}$"
    12  	uuidV4Pattern = "^[[:xdigit:]]{8}-[[:xdigit:]]{4}-4[[:xdigit:]]{3}-[89ab][[:xdigit:]]{3}-[[:xdigit:]]{12}$"
    13  )
    14  
    15  func TestV1(t *testing.T) {
    16  	u := UUIDNS()
    17  	i, err := u.V1()
    18  	assert.NoError(t, err)
    19  	assert.Regexp(t, uuidV1Pattern, i)
    20  }
    21  
    22  func TestV4(t *testing.T) {
    23  	u := UUIDNS()
    24  	i, err := u.V4()
    25  	assert.NoError(t, err)
    26  	assert.Regexp(t, uuidV4Pattern, i)
    27  }
    28  
    29  func TestNil(t *testing.T) {
    30  	u := UUIDNS()
    31  	i, err := u.Nil()
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, "00000000-0000-0000-0000-000000000000", i)
    34  }
    35  
    36  func TestIsValid(t *testing.T) {
    37  	u := UUIDNS()
    38  	in := interface{}(false)
    39  	i, err := u.IsValid(in)
    40  	assert.NoError(t, err)
    41  	assert.False(t, i)
    42  
    43  	in = 12345
    44  	i, err = u.IsValid(in)
    45  	assert.NoError(t, err)
    46  	assert.False(t, i)
    47  
    48  	testdata := []interface{}{
    49  		"123456781234123412341234567890ab",
    50  		"12345678-1234-1234-1234-1234567890ab",
    51  		"urn:uuid:12345678-1234-1234-1234-1234567890ab",
    52  		"{12345678-1234-1234-1234-1234567890ab}",
    53  	}
    54  
    55  	for _, d := range testdata {
    56  		i, err = u.IsValid(d)
    57  		assert.NoError(t, err)
    58  		assert.True(t, i)
    59  	}
    60  }
    61  
    62  func TestParse(t *testing.T) {
    63  	u := UUIDNS()
    64  	in := interface{}(false)
    65  	_, err := u.Parse(in)
    66  	assert.Error(t, err)
    67  
    68  	in = 12345
    69  	_, err = u.Parse(in)
    70  	assert.Error(t, err)
    71  
    72  	in = "12345678-1234-1234-1234-1234567890ab"
    73  	testdata := []interface{}{
    74  		"123456781234123412341234567890ab",
    75  		"12345678-1234-1234-1234-1234567890ab",
    76  		"urn:uuid:12345678-1234-1234-1234-1234567890ab",
    77  		must(url.Parse("urn:uuid:12345678-1234-1234-1234-1234567890ab")),
    78  		"{12345678-1234-1234-1234-1234567890ab}",
    79  	}
    80  
    81  	for _, d := range testdata {
    82  		uid, err := u.Parse(d)
    83  		assert.NoError(t, err)
    84  		assert.Equal(t, in, uid.String())
    85  	}
    86  }