-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils_test.go
More file actions
154 lines (130 loc) · 3.4 KB
/
Copy pathutils_test.go
File metadata and controls
154 lines (130 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package uuidutil_test
import (
"database/sql/driver"
"testing"
"github.com/google/uuid"
"github.com/weprodev/go-pkg/uuidutil"
)
// --- utils.go tests ---
func TestUUIDValueOrNil(t *testing.T) {
if got := uuidutil.UUIDValueOrNil(nil); got != uuid.Nil {
t.Errorf("got %v, want uuid.Nil", got)
}
id := uuid.New()
if got := uuidutil.UUIDValueOrNil(&id); got != id {
t.Errorf("got %v, want %v", got, id)
}
}
func TestUUIDPointerOrNil(t *testing.T) {
if got := uuidutil.UUIDPointerOrNil(uuid.Nil); got != nil {
t.Errorf("got %v, want nil", got)
}
id := uuid.New()
if got := uuidutil.UUIDPointerOrNil(id); got == nil || *got != id {
t.Errorf("got %v, want pointer to %v", got, id)
}
}
func TestValidateAndParseUUID(t *testing.T) {
validStr := uuid.New().String()
parsed, err := uuidutil.ValidateAndParseUUID(validStr, "MyID")
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if parsed.String() != validStr {
t.Errorf("got %s, want %s", parsed, validStr)
}
_, err = uuidutil.ValidateAndParseUUID("", "")
if err == nil || err.Error() != "missing ID" {
t.Errorf("expected missing ID error, got %v", err)
}
_, err = uuidutil.ValidateAndParseUUID("not-a-uuid", "UserID")
if err == nil || err.Error() != "invalid UserID format" {
t.Errorf("expected invalid format error, got %v", err)
}
}
// --- id.go tests ---
func TestID_String_IsNil(t *testing.T) {
zero := uuidutil.ID{}
if !zero.IsNil() {
t.Error("expected zero ID to be nil")
}
id := uuidutil.NewID()
if id.IsNil() {
t.Error("expected new ID to not be nil")
}
if len(id.String()) != 36 {
t.Errorf("expected string length 36, got %d", len(id.String()))
}
}
func TestID_Parse(t *testing.T) {
idStr := uuid.New().String()
parsed, err := uuidutil.ParseID(idStr)
if err != nil {
t.Errorf("unexpected parsing error: %v", err)
}
if parsed.String() != idStr {
t.Errorf("got %s, want %s", parsed, idStr)
}
_, err = uuidutil.ParseID("invalid")
if err == nil {
t.Error("expected error parsing invalid ID")
}
mustParsed := uuidutil.MustParseID(idStr)
if mustParsed.String() != idStr {
t.Errorf("got %s, want %s", mustParsed, idStr)
}
}
func TestID_MustParseID_Panic(t *testing.T) {
defer func() {
if r := recover(); r == nil {
t.Error("expected panic for invalid MustParseID call")
}
}()
uuidutil.MustParseID("invalid")
}
func TestID_Value_Scan(t *testing.T) {
id := uuidutil.NewID()
// Valuer
val, err := id.Value()
if err != nil {
t.Errorf("unexpected Valuer error: %v", err)
}
strVal, ok := val.(string)
if !ok || strVal != id.String() {
t.Errorf("got %v, want %s", val, id.String())
}
// Scanner
var scanned uuidutil.ID
// string scan
err = scanned.Scan(id.String())
if err != nil {
t.Errorf("unexpected Scan error: %v", err)
}
if scanned != id {
t.Errorf("got %v, want %v", scanned, id)
}
// bytes scan
err = scanned.Scan([]byte(id.String()))
if err != nil {
t.Errorf("unexpected Scan error: %v", err)
}
if scanned != id {
t.Errorf("got %v, want %v", scanned, id)
}
// errors
err = scanned.Scan("not-uuid")
if err == nil {
t.Error("expected error scanning invalid string")
}
err = scanned.Scan([]byte("not-uuid"))
if err == nil {
t.Error("expected error scanning invalid bytes")
}
err = scanned.Scan(123)
if err == nil {
t.Error("expected error scanning invalid type")
}
// Make sure we satisfied Valuer and Scanner interfaces
var _ driver.Valuer = id
var _ = (&id).Scan(nil)
}