package nomino import ( "errors" "testing" "time" "github.com/google/uuid" "github.com/stretchr/testify/assert" ) func TestWithGenerator(t *testing.T) { g := func() (string, error) { return "abc", nil } var c config WithGenerator(g)(&c) st, err := c.generator() assert.NoError(t, err) assert.Equal(t, "abc", st) } func TestUUID(t *testing.T) { st, err := UUID()() assert.NoError(t, err) _, parseErr := uuid.Parse(st) assert.NoError(t, parseErr) } type badRead struct{} func (badRead) Read([]byte) (int, error) { return 0, errors.New("sorry") } func TestUUIDFail(t *testing.T) { uuid.SetRand(badRead{}) defer uuid.SetRand(nil) _, err := UUID()() assert.Equal(t, errors.New("sorry"), err) } func TestTimestamp(t *testing.T) { n := time.Now() st, err := Timestamp()() assert.NoError(t, err) assert.Equal(t, n.Format(FileTimestamp), st) } func TestTime(t *testing.T) { d := time.Date(1986, time.March, 28, 12, 0, 0, 0, time.UTC) st, err := Time(d)() assert.NoError(t, err) assert.Equal(t, d.Format(FileTimestamp), st) } func TestTimestampUTC(t *testing.T) { n := time.Now() st, err := TimestampUTC()() assert.NoError(t, err) assert.Equal(t, n.UTC().Format(FileTimestampNoTZ), st) }