36 lines
1014 B
Go
36 lines
1014 B
Go
package acmedns
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestCidrSlice(t *testing.T) {
|
|
for i, test := range []struct {
|
|
input Cidrslice
|
|
expectedErr bool
|
|
expectedLen int
|
|
}{
|
|
{[]string{"192.168.1.0/24"}, false, 1},
|
|
{[]string{"shoulderror"}, true, 0},
|
|
{[]string{"2001:db8:aaaaa::"}, true, 0},
|
|
{[]string{"192.168.1.0/24", "2001:db8::/32"}, false, 2},
|
|
} {
|
|
err := test.input.IsValid()
|
|
if test.expectedErr && err == nil {
|
|
t.Errorf("Expected test %d to generate IsValid() error but it didn't", i)
|
|
}
|
|
if !test.expectedErr && err != nil {
|
|
t.Errorf("Expected test %d to pass IsValid() but it generated an error %s", i, err)
|
|
}
|
|
outSlice := []string{}
|
|
err = json.Unmarshal([]byte(test.input.JSON()), &outSlice)
|
|
if err != nil {
|
|
t.Errorf("Unexpected error when unmarshaling Cidrslice JSON: %s", err)
|
|
}
|
|
if len(outSlice) != test.expectedLen {
|
|
t.Errorf("Expected cidrslice JSON to be of length %d, but got %d instead for test %d", test.expectedLen, len(outSlice), i)
|
|
}
|
|
}
|
|
}
|