53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package tracker
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/weaveworks/weave/net/address"
|
|
)
|
|
|
|
var (
|
|
r0to127 = cidr("10.0.0.0", "10.0.0.127")
|
|
r128to255 = cidr("10.0.0.128", "10.0.0.255")
|
|
r0to255 = cidr("10.0.0.0", "10.0.0.255")
|
|
r1dot0to255 = cidr("10.0.1.0", "10.0.1.255")
|
|
r2dot0to255 = cidr("10.0.2.0", "10.0.2.255")
|
|
)
|
|
|
|
func TestRemoveCommon(t *testing.T) {
|
|
a := []address.CIDR{r0to127, r1dot0to255}
|
|
b := []address.CIDR{r1dot0to255, r2dot0to255}
|
|
newA, newB := RemoveCommon(a, b)
|
|
require.Equal(t, []address.CIDR{r0to127}, newA)
|
|
require.Equal(t, []address.CIDR{r2dot0to255}, newB)
|
|
}
|
|
|
|
func TestMerge(t *testing.T) {
|
|
ranges := []address.Range{
|
|
r0to127.Range(),
|
|
r128to255.Range(),
|
|
r2dot0to255.Range(),
|
|
}
|
|
require.Equal(t, []address.Range{r0to255.Range(), r2dot0to255.Range()}, Merge(ranges))
|
|
}
|
|
|
|
// Helper
|
|
|
|
// TODO(mp) DRY with helpers of other tests.
|
|
|
|
func ip(s string) address.Address {
|
|
addr, _ := address.ParseIP(s)
|
|
return addr
|
|
}
|
|
|
|
// [start; end]
|
|
func cidr(start, end string) address.CIDR {
|
|
c := address.Range{Start: ip(start), End: ip(end) + 1}.CIDRs()
|
|
if len(c) != 1 {
|
|
panic("invalid cidr")
|
|
}
|
|
return c[0]
|
|
}
|