More and better tests

This commit is contained in:
Miek Gieben 2015-08-26 07:34:51 +01:00
parent fba9ecdf79
commit 0ce87cb3da
2 changed files with 39 additions and 17 deletions

View File

@ -54,6 +54,8 @@ func Dedup(rrs []RR) []RR {
// it from the map.
if _, ok := m[keys[i]]; ok {
if needsDeletion(r, keys[i], cname, dname) {
// It the RR is masked by an CNAME or DNAME, we only
// delete it from the map, but don't copy it.
delete(m, keys[i])
continue
}

View File

@ -1,9 +1,6 @@
package dns
import (
"reflect"
"testing"
)
import "testing"
func TestDedup(t *testing.T) {
// make it []string
@ -30,34 +27,57 @@ func TestDedup(t *testing.T) {
newRR(t, "miek.nl. IN A 127.0.0.1"),
newRR(t, "miek.de. IN A 127.0.0.1"),
}: []string{"miek.nl.\t3600\tCH\tA\t127.0.0.1",
"miek.nl.\t3600\tIN\tA\t127.0.0.1",
"miek.de.\t3600\tIN\tA\t127.0.0.1",
},
[...]RR{
newRR(t, "miek.de. IN A 127.0.0.1"),
newRR(t, "miek.nl. IN A 127.0.0.1"),
newRR(t, "miek.nl. IN A 127.0.0.1"),
newRR(t, "miek.nl. 200 IN A 127.0.0.1"),
newRR(t, "miek.nl. 300 IN A 127.0.0.1"),
}: []string{"miek.de.\t3600\tIN\tA\t127.0.0.1",
"miek.de.\t3600\tIN\tA\t127.0.0.1",
"miek.nl.\t200\tIN\tA\t127.0.0.1",
},
}
T := 0
for rr, expected := range testcases {
out := Dedup([]RR{rr[0], rr[1], rr[2]})
if !reflect.DeepEqual(out, expected) {
t.Fatalf("expected %v, got %v", expected, out)
for i, o := range out {
if o.String() != expected[i] {
t.Fatalf("test %d, expected %v, got %v", T, expected[i], o.String())
}
}
T++
}
}
func TestDedupWithCNAME(t *testing.T) {
in := []RR{
newRR(t, "miek.Nl. CNAME a."),
newRR(t, "miEk.nl. IN A 127.0.0.1"),
newRR(t, "miek.Nl. IN A 127.0.0.1"),
newRR(t, "miek.de. IN A 127.0.0.1"),
func TestDedupWithCNAMEDNAME(t *testing.T) {
testcases := map[[4]RR][]string{
[...]RR{
newRR(t, "miek.Nl. CNAME a."),
newRR(t, "miEk.nl. IN A 127.0.0.1"),
newRR(t, "miek.Nl. IN A 127.0.0.1"),
newRR(t, "miek.de. IN A 127.0.0.1"),
}: []string{"miek.Nl.\t3600\tIN\tCNAME\ta.",
"miek.de.\t3600\tIN\tA\t127.0.0.1"},
[...]RR{
newRR(t, "Miek.nl. CNAME a."),
newRR(t, "mIek.nl. CNAME a."),
newRR(t, "miEk.nl. CNAME a."),
newRR(t, "mieK.nl. CNAME a."),
}: []string{"Miek.nl.\t3600\tIN\tCNAME\ta."},
}
T := 0
for rr, expected := range testcases {
out := Dedup([]RR{rr[0], rr[1], rr[2]})
for i, o := range out {
if o.String() != expected[i] {
t.Fatalf("test %d, expected %v, got %v", T, expected[i], o.String())
}
}
T++
}
out := Dedup(in)
t.Logf("%+v\n", out)
}
func TestNormalizedString(t *testing.T) {