32 lines
910 B
Go
32 lines
910 B
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func mustRange(t *testing.T, prefix string) addressRange {
|
|
t.Helper()
|
|
result, ok := rangeFromPrefix(prefix)
|
|
if !ok {
|
|
t.Fatalf("invalid prefix %s", prefix)
|
|
}
|
|
return result
|
|
}
|
|
|
|
func TestRangeSetOperations(t *testing.T) {
|
|
left := []addressRange{mustRange(t, "10.63.81.107/24"), mustRange(t, "10.211.128.249/24")}
|
|
right := []addressRange{mustRange(t, "10.211.128.249/25"), mustRange(t, "10.104.47.60/24")}
|
|
|
|
merged := mergeRanges(left)
|
|
if len(merged) != 1 || addressCount(merged) != 512 {
|
|
t.Fatalf("unexpected merge: %#v", merged)
|
|
}
|
|
|
|
intersection := intersectRanges(left, right)
|
|
if len(intersection) != 1 || addressCount(intersection) != 128 {
|
|
t.Fatalf("unexpected intersection: %#v", intersection)
|
|
}
|
|
|
|
difference := subtractRanges(left, right)
|
|
if len(difference) != 2 || addressCount(difference) != 384 {
|
|
t.Fatalf("unexpected difference: %#v", difference)
|
|
}
|
|
}
|