1package dns 2 3import "testing" 4 5func TestDedup(t *testing.T) { 6 testcases := map[[3]RR][]string{ 7 [...]RR{ 8 testRR("mIek.nl. IN A 127.0.0.1"), 9 testRR("mieK.nl. IN A 127.0.0.1"), 10 testRR("miek.Nl. IN A 127.0.0.1"), 11 }: {"mIek.nl.\t3600\tIN\tA\t127.0.0.1"}, 12 [...]RR{ 13 testRR("miEk.nl. 2000 IN A 127.0.0.1"), 14 testRR("mieK.Nl. 1000 IN A 127.0.0.1"), 15 testRR("Miek.nL. 500 IN A 127.0.0.1"), 16 }: {"miEk.nl.\t500\tIN\tA\t127.0.0.1"}, 17 [...]RR{ 18 testRR("miek.nl. IN A 127.0.0.1"), 19 testRR("miek.nl. CH A 127.0.0.1"), 20 testRR("miek.nl. IN A 127.0.0.1"), 21 }: {"miek.nl.\t3600\tIN\tA\t127.0.0.1", 22 "miek.nl.\t3600\tCH\tA\t127.0.0.1", 23 }, 24 [...]RR{ 25 testRR("miek.nl. CH A 127.0.0.1"), 26 testRR("miek.nl. IN A 127.0.0.1"), 27 testRR("miek.de. IN A 127.0.0.1"), 28 }: {"miek.nl.\t3600\tCH\tA\t127.0.0.1", 29 "miek.nl.\t3600\tIN\tA\t127.0.0.1", 30 "miek.de.\t3600\tIN\tA\t127.0.0.1", 31 }, 32 [...]RR{ 33 testRR("miek.de. IN A 127.0.0.1"), 34 testRR("miek.nl. 200 IN A 127.0.0.1"), 35 testRR("miek.nl. 300 IN A 127.0.0.1"), 36 }: {"miek.de.\t3600\tIN\tA\t127.0.0.1", 37 "miek.nl.\t200\tIN\tA\t127.0.0.1", 38 }, 39 } 40 41 for rr, expected := range testcases { 42 out := Dedup([]RR{rr[0], rr[1], rr[2]}, nil) 43 for i, o := range out { 44 if o.String() != expected[i] { 45 t.Fatalf("expected %v, got %v", expected[i], o.String()) 46 } 47 } 48 } 49} 50 51func BenchmarkDedup(b *testing.B) { 52 rrs := []RR{ 53 testRR("miEk.nl. 2000 IN A 127.0.0.1"), 54 testRR("mieK.Nl. 1000 IN A 127.0.0.1"), 55 testRR("Miek.nL. 500 IN A 127.0.0.1"), 56 } 57 m := make(map[string]RR) 58 for i := 0; i < b.N; i++ { 59 Dedup(rrs, m) 60 } 61} 62 63func TestNormalizedString(t *testing.T) { 64 tests := map[RR]string{ 65 testRR("mIEk.Nl. 3600 IN A 127.0.0.1"): "miek.nl.\tIN\tA\t127.0.0.1", 66 testRR("m\\ iek.nL. 3600 IN A 127.0.0.1"): "m\\ iek.nl.\tIN\tA\t127.0.0.1", 67 testRR("m\\\tIeK.nl. 3600 in A 127.0.0.1"): "m\\009iek.nl.\tIN\tA\t127.0.0.1", 68 } 69 for tc, expected := range tests { 70 n := normalizedString(tc) 71 if n != expected { 72 t.Errorf("expected %s, got %s", expected, n) 73 } 74 } 75} 76