-
Notifications
You must be signed in to change notification settings - Fork 0
/
url_test.go
84 lines (64 loc) · 1.67 KB
/
url_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
package gzu
import (
"log"
"testing"
)
func TestUrl(t *testing.T) {
// [scheme:][//[userinfo@]host][/]path[?query][#fragment]
var(
u *URL
err error
)
u = UrlParse(`10.10.1.2:9090#hello=nihao`)
t.Log(u, err, u.FullPath())
u = UrlParse(`1:`)
t.Log(u, err, u.FullPath())
u = UrlParse(`10.10.1.2:9090`)
t.Log(u, err, u.FullPath())
u = UrlParse(`./application.yml`)
t.Log(u, err, u.FullPath())
u = UrlParse(`/root/config`)
t.Log(u, err, u.FullPath())
u = UrlParse(`./`)
t.Log(u, err, u.FullPath())
u = UrlParse(`c:/dir/file.yml`)
t.Log(u, err, u.FullPath())
u = UrlParse(`file://c:/dir/file.yml`)
t.Log(u, err, u.FullPath())
u = UrlParse(`redis://root:bat2019!#$@118.31.126.111:27017/?authSource=admin`)
t.Log(u, err, u.FullPath())
//
u = UrlParse(`https://me:pass@example.com/foo/bar?x=1&y=2#anchor`)
t.Log(u, err, u.FullPath())
}
type XT struct {
X string `json:"x"`
A int `json:"a"`
}
func TestURL_GetQuery(t *testing.T) {
u := UrlParse(`https://me:pass@example.com/foo/bar?x=q&a=8&=b&c=&x=1&y=2#anchor`)
t.Log(u)
log.Println(u.GetQuery("x"))
log.Println(u.GetQuery("y"))
log.Println(u.GetQuery("a"))
log.Println(u.GetQuery("b"))
log.Println(u.GetQuery("c"))
log.Println(u.GetQuery("d"))
var xt XT
err := u.UnmarshalQuery(&xt)
log.Println(err, xt)
}
func TestUrlTo(t *testing.T) {
var(
u *URL
err error
)
u = UrlParse(`file:///dir/file.yml`)
t.Log(u, err, u.FullPath())
t.Log(u)
}
func TestUrlInfoBuilder_Addr(t *testing.T) {
log.SetFlags(11)
s := &UrlInfoBuilder{Url: UrlParse(`https://me:pass@example.com/foo/bar?x=q&a=8&=b&c=&x=1&y=2#anchor`)}
log.Println(s.Scheme().User().Addr().Port().Path().RawQuery().Fragment().ToString())
}