5 func TestDedup(t *testing.T) {
6 testcases := map[[3]RR][]string{
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"},
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"},
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",
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",
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",
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())
51 func BenchmarkDedup(b *testing.B) {
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"),
57 m := make(map[string]RR)
58 for i := 0; i < b.N; i++ {
63 func 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",
69 for tc, expected := range tests {
70 n := normalizedString(tc)
72 t.Errorf("expected %s, got %s", expected, n)