Skip to content

Commit c9e1da3

Browse files
author
Olaf Alders
committed
Consolidate tests
1 parent 7abc676 commit c9e1da3

File tree

1 file changed

+74
-228
lines changed

1 file changed

+74
-228
lines changed

traverse_test.go

Lines changed: 74 additions & 228 deletions
Original file line numberDiff line numberDiff line change
@@ -48,261 +48,107 @@ func TestNetworksWithInvalidSearchTree(t *testing.T) {
4848
assert.Equal(t, n.Err().Error(), "invalid search tree at 128.128.128.128/32")
4949
}
5050

51-
func TestNetworksWithinV4SearchInV4Db(t *testing.T) {
52-
var network = &net.IPNet{IP: make(net.IP, 4), Mask: net.CIDRMask(0, 32)}
53-
54-
for _, recordSize := range []uint{24, 28, 32} {
55-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-ipv4-%d.mmdb", recordSize))
56-
reader, err := Open(fileName)
57-
require.Nil(t, err, "unexpected error while opening database: %v", err)
58-
defer reader.Close()
59-
60-
n := reader.NetworksWithin(network)
61-
var innerIPs []string
62-
63-
for n.Next() {
64-
record := struct {
65-
IP string `maxminddb:"ip"`
66-
}{}
67-
network, err := n.Network(&record)
68-
assert.Nil(t, err)
69-
assert.Equal(t, record.IP, network.IP.String(),
70-
"expected %s got %s", record.IP, network.IP.String(),
71-
)
72-
innerIPs = append(innerIPs, network.String())
73-
}
51+
type networkTest struct {
52+
Network string
53+
Database string
54+
Expected []string
55+
}
7456

75-
expectedIPs := []string{
57+
var tests = []networkTest{
58+
networkTest{
59+
Network: "0.0.0.0/0",
60+
Database: "ipv4",
61+
Expected: []string{
7662
"1.1.1.1/32",
7763
"1.1.1.2/31",
7864
"1.1.1.4/30",
7965
"1.1.1.8/29",
8066
"1.1.1.16/28",
8167
"1.1.1.32/32",
82-
}
83-
84-
assert.Equal(t, expectedIPs, innerIPs)
85-
assert.Nil(t, n.Err())
86-
}
87-
}
88-
89-
func TestNetworksWithinSlash32V4SearchInV4Db(t *testing.T) {
90-
_, network, err := net.ParseCIDR("1.1.1.1/32")
91-
assert.Nil(t, err)
92-
93-
for _, recordSize := range []uint{24, 28, 32} {
94-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-ipv4-%d.mmdb", recordSize))
95-
reader, err := Open(fileName)
96-
require.Nil(t, err, "unexpected error while opening database: %v", err)
97-
defer reader.Close()
98-
99-
n := reader.NetworksWithin(network)
100-
var innerIPs []string
101-
102-
for n.Next() {
103-
record := struct {
104-
IP string `maxminddb:"ip"`
105-
}{}
106-
network, err := n.Network(&record)
107-
assert.Nil(t, err)
108-
assert.Equal(t, record.IP, network.IP.String(),
109-
"expected %s got %s", record.IP, network.IP.String(),
110-
)
111-
innerIPs = append(innerIPs, network.String())
112-
}
113-
114-
expectedIPs := []string{
68+
},
69+
},
70+
networkTest{
71+
Network: "1.1.1.1/32",
72+
Database: "ipv4",
73+
Expected: []string{
11574
"1.1.1.1/32",
116-
}
117-
118-
assert.Equal(t, expectedIPs, innerIPs)
119-
assert.Nil(t, n.Err())
120-
}
121-
}
122-
123-
func TestNetworksWithinSlash32V4SearchInV6Db(t *testing.T) {
124-
_, network, err := net.ParseCIDR("1.1.1.1/32")
125-
assert.Nil(t, err)
126-
127-
for _, recordSize := range []uint{24, 28, 32} {
128-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-mixed-%d.mmdb", recordSize))
129-
reader, err := Open(fileName)
130-
require.Nil(t, err, "unexpected error while opening database: %v", err)
131-
defer reader.Close()
132-
133-
n := reader.NetworksWithin(network)
134-
var innerIPs []string
135-
136-
for n.Next() {
137-
record := struct {
138-
IP string `maxminddb:"ip"`
139-
}{}
140-
network, err := n.Network(&record)
141-
assert.Nil(t, err)
142-
innerIPs = append(innerIPs, network.String())
143-
}
144-
145-
expectedIPs := []string{
75+
},
76+
},
77+
networkTest{
78+
Network: "1.1.1.1/32",
79+
Database: "mixed",
80+
Expected: []string{
14681
"1.1.1.1/32",
147-
}
148-
149-
assert.Equal(t, expectedIPs, innerIPs)
150-
assert.Nil(t, n.Err())
151-
}
152-
153-
}
154-
func TestNetworksWithinSlash128V6SearchInV6Db(t *testing.T) {
155-
_, network, err := net.ParseCIDR("::1:ffff:ffff/128")
156-
assert.Nil(t, err)
157-
158-
for _, recordSize := range []uint{24, 28, 32} {
159-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-ipv6-%d.mmdb", recordSize))
160-
reader, err := Open(fileName)
161-
require.Nil(t, err, "unexpected error while opening database: %v", err)
162-
defer reader.Close()
163-
164-
n := reader.NetworksWithin(network)
165-
var innerIPs []string
166-
167-
for n.Next() {
168-
record := struct {
169-
IP string `maxminddb:"ip"`
170-
}{}
171-
network, err := n.Network(&record)
172-
assert.Nil(t, err)
173-
assert.Equal(t, record.IP, network.IP.String(),
174-
"expected %s got %s", record.IP, network.IP.String(),
175-
)
176-
innerIPs = append(innerIPs, network.String())
177-
}
178-
179-
expectedIPs := []string{
82+
},
83+
},
84+
networkTest{
85+
Network: "::1:ffff:ffff/128",
86+
Database: "ipv6",
87+
Expected: []string{
18088
"::1:ffff:ffff/128",
181-
}
182-
183-
assert.Equal(t, expectedIPs, innerIPs)
184-
assert.Nil(t, n.Err())
185-
}
186-
}
187-
188-
func TestNetworksWithinV6SearchInV6Db(t *testing.T) {
189-
var network = &net.IPNet{IP: make(net.IP, 16), Mask: net.CIDRMask(0, 128)}
190-
191-
for _, recordSize := range []uint{24, 28, 32} {
192-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-ipv6-%d.mmdb", recordSize))
193-
reader, err := Open(fileName)
194-
require.Nil(t, err, "unexpected error while opening database: %v", err)
195-
defer reader.Close()
196-
197-
n := reader.NetworksWithin(network)
198-
var innerIPs []string
199-
200-
for n.Next() {
201-
record := struct {
202-
IP string `maxminddb:"ip"`
203-
}{}
204-
network, err := n.Network(&record)
205-
assert.Nil(t, err)
206-
assert.Equal(t, record.IP, network.IP.String(),
207-
"expected %s got %s", record.IP, network.IP.String(),
208-
)
209-
innerIPs = append(innerIPs, network.String())
210-
}
211-
212-
expectedIPs := []string{
89+
},
90+
},
91+
networkTest{
92+
Network: "::/0",
93+
Database: "ipv6",
94+
Expected: []string{
21395
"::1:ffff:ffff/128",
21496
"::2:0:0/122",
21597
"::2:0:40/124",
21698
"::2:0:50/125",
21799
"::2:0:58/127",
218-
}
219-
220-
assert.Equal(
221-
t,
222-
expectedIPs,
223-
innerIPs,
224-
fmt.Sprintf("inner IPs for %v", fileName),
225-
)
226-
assert.Nil(t, n.Err())
227-
}
228-
}
229-
230-
func TestNetworksWithinV4SearchInV6Db(t *testing.T) {
231-
var network = &net.IPNet{IP: make(net.IP, 4), Mask: net.CIDRMask(0, 32)}
232-
233-
for _, recordSize := range []uint{24, 28, 32} {
234-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-mixed-%d.mmdb", recordSize))
235-
reader, err := Open(fileName)
236-
require.Nil(t, err, "unexpected error while opening database: %v", err)
237-
defer reader.Close()
238-
239-
n := reader.NetworksWithin(network)
240-
var innerIPs []string
241-
242-
for n.Next() {
243-
record := struct {
244-
IP string `maxminddb:"ip"`
245-
}{}
246-
network, err := n.Network(&record)
247-
assert.Nil(t, err)
248-
innerIPs = append(innerIPs, network.String())
249-
}
250-
251-
expectedIPs := []string{
100+
},
101+
},
102+
networkTest{
103+
Network: "0.0.0.0/0",
104+
Database: "mixed",
105+
Expected: []string{
252106
"1.1.1.1/32",
253107
"1.1.1.2/31",
254108
"1.1.1.4/30",
255109
"1.1.1.8/29",
256110
"1.1.1.16/28",
257111
"1.1.1.32/32",
258-
}
259-
260-
assert.Equal(
261-
t,
262-
expectedIPs,
263-
innerIPs,
264-
fmt.Sprintf("inner IPs for %v", fileName),
265-
)
266-
assert.Nil(t, n.Err())
267-
}
268-
}
269-
270-
func TestNetworksWithinV6SearchInV4Db(t *testing.T) {
271-
var network = &net.IPNet{IP: make(net.IP, 16), Mask: net.CIDRMask(0, 128)}
272-
273-
for _, recordSize := range []uint{24, 28, 32} {
274-
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-ipv4-%d.mmdb", recordSize))
275-
reader, err := Open(fileName)
276-
require.Nil(t, err, "unexpected error while opening database: %v", err)
277-
defer reader.Close()
278-
279-
n := reader.NetworksWithin(network)
280-
var innerIPs []string
281-
282-
for n.Next() {
283-
record := struct {
284-
IP string `maxminddb:"ip"`
285-
}{}
286-
network, err := n.Network(&record)
287-
assert.Nil(t, err)
288-
innerIPs = append(innerIPs, network.String())
289-
}
290-
291-
expectedIPs := []string{
112+
},
113+
},
114+
networkTest{
115+
Network: "::/0",
116+
Database: "ipv4",
117+
Expected: []string{
292118
"101:101::/32",
293119
"101:102::/31",
294120
"101:104::/30",
295121
"101:108::/29",
296122
"101:110::/28",
297123
"101:120::/32",
298-
}
124+
},
125+
},
126+
}
127+
128+
func TestNetworksWithin(t *testing.T) {
129+
for _, v := range tests {
130+
for _, recordSize := range []uint{24, 28, 32} {
131+
fileName := testFile(fmt.Sprintf("MaxMind-DB-test-%s-%d.mmdb", v.Database, recordSize))
132+
reader, err := Open(fileName)
133+
require.Nil(t, err, "unexpected error while opening database: %v", err)
134+
defer reader.Close()
299135

300-
assert.Equal(
301-
t,
302-
expectedIPs,
303-
innerIPs,
304-
fmt.Sprintf("inner IPs for %v", fileName),
305-
)
306-
assert.Nil(t, n.Err())
136+
_, network, err := net.ParseCIDR(v.Network)
137+
assert.Nil(t, err)
138+
n := reader.NetworksWithin(network)
139+
var innerIPs []string
140+
141+
for n.Next() {
142+
record := struct {
143+
IP string `maxminddb:"ip"`
144+
}{}
145+
network, err := n.Network(&record)
146+
assert.Nil(t, err)
147+
innerIPs = append(innerIPs, network.String())
148+
}
149+
150+
assert.Equal(t, v.Expected, innerIPs)
151+
assert.Nil(t, n.Err())
152+
}
307153
}
308154
}

0 commit comments

Comments
 (0)