forked from facebookarchive/flag.addrs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
addrs_test.go
161 lines (142 loc) · 3.38 KB
/
addrs_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
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
155
156
157
158
159
160
161
package addrs
import (
"flag"
"fmt"
"net"
"sync"
"testing"
)
var (
genNameCount int
genNameMutex sync.Mutex
)
func genName() string {
genNameMutex.Lock()
defer genNameMutex.Unlock()
defer func() { genNameCount++ }()
return fmt.Sprintf("flag-%d", genNameCount)
}
func TestFlagOne(t *testing.T) {
name := genName()
var a1 net.Addr
FlagOneVar(&a1, name, "", "")
const network = "udp"
const addr = "127.0.0.1:1234"
if err := flag.Set(name, network+":"+addr); err != nil {
t.Fatal(err)
}
if a1.Network() != network {
t.Fatal("did not find expected network")
}
if a1.String() != addr {
t.Fatal("did not find expected addr")
}
}
func TestFlagOneInvalidNetwork(t *testing.T) {
name := genName()
var a1 net.Addr
FlagOneVar(&a1, name, "", "")
const network = "foo"
const addr = "127.0.0.1:1234"
err := flag.Set(name, network+":"+addr)
if err == nil {
t.Fatal("was expecting an error")
}
if err.Error() != "unknown network foo" {
t.Fatal("did not get expected error, got", err)
}
}
func TestFlagOneDefaultValue(t *testing.T) {
name := genName()
var a1 net.Addr
const network = "udp"
const addr = "127.0.0.1:1234"
FlagOneVar(&a1, name, network+":"+addr, "")
if a1.Network() != network {
t.Fatal("did not find expected network")
}
if a1.String() != addr {
t.Fatal("did not find expected addr")
}
}
func TestFlagOneInvalidDefaultValue(t *testing.T) {
defer func() {
if err := recover(); err == nil {
t.Fatal("was expecting panic")
}
}()
name := genName()
var a1 net.Addr
const network = "foo"
const addr = "127.0.0.1:1234"
FlagOneVar(&a1, name, network+":"+addr, "")
}
func TestFlagOneInvalidFormat(t *testing.T) {
name := genName()
var a1 net.Addr
FlagOneVar(&a1, name, "", "")
err := flag.Set(name, "foo")
if err == nil {
t.Fatal("was expecting an error")
}
if err.Error() != `invalid address format, must be "net:host:port": foo` {
t.Fatal("did not get expected error, got", err)
}
}
func TestFlagMany(t *testing.T) {
name := genName()
var a1 []net.Addr
FlagManyVar(&a1, name, "", "")
const network0 = "tcp"
const addr0 = "127.0.0.1:1234"
const network1 = "tcp"
const addr1 = "127.0.0.1:5678"
if err := flag.Set(name, network0+":"+addr0+","+network1+":"+addr1); err != nil {
t.Fatal(err)
}
if a1[0].Network() != network0 {
t.Fatal("did not find expected network")
}
if a1[0].String() != addr0 {
t.Fatal("did not find expected addr")
}
if a1[1].Network() != network1 {
t.Fatal("did not find expected network")
}
if a1[1].String() != addr1 {
t.Fatal("did not find expected addr")
}
}
func TestFlagManyDefaultValue(t *testing.T) {
name := genName()
var a1 []net.Addr
const network0 = "tcp"
const addr0 = "127.0.0.1:1234"
const network1 = "tcp"
const addr1 = "127.0.0.1:5678"
FlagManyVar(&a1, name, network0+":"+addr0+","+network1+":"+addr1, "")
if a1[0].Network() != network0 {
t.Fatal("did not find expected network")
}
if a1[0].String() != addr0 {
t.Fatal("did not find expected addr")
}
if a1[1].Network() != network1 {
t.Fatal("did not find expected network")
}
if a1[1].String() != addr1 {
t.Fatal("did not find expected addr")
}
}
func TestFlagManyInvalidDefaultValue(t *testing.T) {
defer func() {
if err := recover(); err == nil {
t.Fatal("was expecting panic")
}
}()
name := genName()
var a1 []net.Addr
const network = "foo"
const addr = "127.0.0.1:1234"
FlagManyVar(&a1, name, network+":"+addr, "")
}