Skip to content

Commit

Permalink
more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gaissmai committed Jul 24, 2022
1 parent 28b7729 commit 3e3ed27
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 2 deletions.
6 changes: 4 additions & 2 deletions iprange.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,7 @@ func Parse(s string) (r IPRange, err error) {
return r, errors.New("ip address MUST NOT have a zone")
}

if first.Is4() && !last.Is4() || first.Is6() && !last.Is6() ||
first.Is4In6() && !last.Is4In6() || last.Is4In6() && !first.Is4In6() {
if first.Is4() && !last.Is4() || first.Is6() && !last.Is6() {
return r, errors.New("first and last address have different IP versions")
}
if last.Less(first) {
Expand All @@ -103,6 +102,9 @@ func Parse(s string) (r IPRange, err error) {
if err != nil {
return r, err
}
if addr.Zone() != "" {
return r, errors.New("ip address MUST NOT have a zone")
}
return IPRange{addr, addr}, nil
}

Expand Down
92 changes: 92 additions & 0 deletions iprange_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ func TestParseRangeInvalid(t *testing.T) {
"-fe80::1",
"fe80::/130",
"127.0.0.0/35",
"fe80::1%eth0-fe80::2",
"fe80::1-fe80::2%eth2",
"fe80::2-fe80::1",
"fe80::2%eth2",
"1.2.3.4.5",
}

for _, s := range tests {
Expand Down Expand Up @@ -546,6 +551,14 @@ func TestPrefixes(t *testing.T) {
t.Fatalf("iprange.Prefixes(), for '%s', want %v, got %v", tt.in, tt.want, got)
}
}

for _, tt := range tests {
got := []netip.Prefix{}
got = tt.in.PrefixesAppend(got)
if !reflect.DeepEqual(got, tt.want) {
t.Fatalf("iprange.Prefixes(), for '%s', want %v, got %v", tt.in, tt.want, got)
}
}
}

func TestMarshalUnmarshalBinary(t *testing.T) {
Expand Down Expand Up @@ -655,4 +668,83 @@ func TestMarshalUnmarshalText(t *testing.T) {
t.Fatalf("got %v; want %v", r2, r)
}
}

// ###
// only unmarshal into zero Range
r := mustParseIPRange("10.0.0.0/24")
if err := r.UnmarshalText([]byte{1, 2, 3, 0, 1, 2, 3, 255}); err == nil {
t.Fatalf("%q decoded from byte slize into non zero range; want err, got %v", r, err)
}
}

func TestCompareLower(t *testing.T) {
tests := []struct {
r1 iprange.IPRange
r2 iprange.IPRange
want int
}{
{
r1: mustParseIPRange("1.2.3.4-1.2.3.5"),
r2: mustParseIPRange("1.2.3.4-1.2.3.5"),
want: 0,
},
{
r1: mustParseIPRange("1.2.3.3-1.2.3.7"),
r2: mustParseIPRange("1.2.3.4-1.2.3.8"),
want: -1,
},
{
r1: mustParseIPRange("2001:db8::1"),
r2: mustParseIPRange("fe80::/10"),
want: -1,
},
}

for _, tt := range tests {
got := tt.r1.CompareLower(tt.r2)
if got != tt.want {
t.Fatalf("(%s).CompareLower(%s), want: %v, got: %v\n", tt.r1, tt.r2, tt.want, got)
}

got = tt.r2.CompareLower(tt.r1)
if -1*got != tt.want {
t.Fatalf("(%s).CompareLower(%s), want: %v, got: %v\n", tt.r2, tt.r1, tt.want, -1*got)
}
}
}

func TestCompareUpper(t *testing.T) {
tests := []struct {
r1 iprange.IPRange
r2 iprange.IPRange
want int
}{
{
r1: mustParseIPRange("1.2.3.4-1.2.3.5"),
r2: mustParseIPRange("1.2.3.4-1.2.3.5"),
want: 0,
},
{
r1: mustParseIPRange("1.2.3.3-1.2.3.7"),
r2: mustParseIPRange("1.2.3.4-1.2.3.8"),
want: -1,
},
{
r1: mustParseIPRange("2001:db8::1"),
r2: mustParseIPRange("fe80::/10"),
want: -1,
},
}

for _, tt := range tests {
got := tt.r1.CompareUpper(tt.r2)
if got != tt.want {
t.Fatalf("(%s).CompareLower(%s), want: %v, got: %v\n", tt.r1, tt.r2, tt.want, got)
}

got = tt.r2.CompareUpper(tt.r1)
if -1*got != tt.want {
t.Fatalf("(%s).CompareLower(%s), want: %v, got: %v\n", tt.r2, tt.r1, tt.want, -1*got)
}
}
}

0 comments on commit 3e3ed27

Please sign in to comment.