-
Notifications
You must be signed in to change notification settings - Fork 0
/
address_test.go
92 lines (85 loc) · 2.25 KB
/
address_test.go
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
package datatypex_test
import (
"testing"
. "github.com/onsi/gomega"
"github.com/pkg/errors"
"github.com/xoctopus/x/misc/must"
. "github.com/xoctopus/datatypex"
)
func TestAddress_MarshalText(t *testing.T) {
cases := []*struct {
Name string
Addr *Address
Expect string
}{
{
Name: "Asset",
Addr: NewAddress("avatar", "filename.png"),
Expect: "asset://avatar/filename.png",
}, {
Name: "HttpFileURI",
Addr: must.NoErrorV(ParseAddress("https://demo.com/avatar/filename.png")),
Expect: "https://demo.com/avatar/filename.png",
}, {
Name: "WithoutExtension",
Addr: NewAddress("avatar", "filename"),
Expect: "asset://avatar/filename",
}, {
Name: "LocalFile",
Addr: must.NoErrorV(ParseAddress("file:///AbsPath/To/Your/Local/File.ext")),
Expect: "file:///AbsPath/To/Your/Local/File.ext",
}, {
Name: "Empty",
Addr: &Address{},
Expect: "",
},
}
for _, c := range cases {
t.Run(c.Name, func(t *testing.T) {
bytes, err := c.Addr.Value()
NewWithT(t).Expect(err).To(BeNil())
NewWithT(t).Expect(bytes).To(Equal(c.Expect))
raw, err := c.Addr.MarshalText()
NewWithT(t).Expect(err).To(BeNil())
NewWithT(t).Expect(string(raw)).To(Equal(c.Expect))
})
}
}
func TestAddress_UnmarshalText(t *testing.T) {
cases := []*struct {
Name string
Input string
OutVal *Address
OutErr error
}{
{
Name: "Asset",
Input: "asset://avatar/filename.png",
OutVal: NewAddress("avatar", "filename.png"),
}, {
Name: "HttpFileURL",
Input: "https://group.com/avatar/filename.png",
OutVal: must.NoErrorV(ParseAddress("https://group.com/avatar/filename.png")),
}, {
Name: "LocalFile",
Input: "file:///AbsPath/To/Your/Local/File.ext",
OutVal: must.NoErrorV(ParseAddress("file:///AbsPath/To/Your/Local/File.ext")),
}, {
Name: "InvalidURI",
Input: "http://foo.com/ctl\x7f",
OutErr: errors.New("should parse failed"),
},
}
for _, c := range cases {
t.Run(c.Name, func(t *testing.T) {
v := &Address{}
err := v.Scan(c.Input)
if c.OutErr != nil {
NewWithT(t).Expect(err).NotTo(BeNil())
} else {
NewWithT(t).Expect(v.String()).To(Equal(c.OutVal.String()))
}
})
}
NewWithT(t).Expect((&Address{}).DataType("")).To(Equal("varchar(1024)"))
}