package model import ( "slices" "testing" ) func TestNameLess(t *testing.T) { want := []string{ "10.0.10.in-addr.arpa.", "1.10.0.10.in-addr.arpa.", "02.10.0.10.in-addr.arpa.", "2.10.0.10.in-addr.arpa.", "10.10.0.10.in-addr.arpa.", "101.10.0.10.in-addr.arpa.", "x.101.10.0.10.in-addr.arpa.", "254.10.0.10.in-addr.arpa.", "a.10.0.10.in-addr.arpa.", } got := slices.Clone(want) slices.Reverse(got) slices.SortFunc(got, func(a, b string) int { if NameLess(a, b) { return -1 } if NameLess(b, a) { return 1 } return 0 }) if !slices.Equal(got, want) { t.Fatalf("got %v\nwant %v", got, want) } // Non-numeric labels keep canonical (byte) order. if !NameLess("host10.example.", "host2.example.") { t.Error("host10 should sort before host2") } if !NameLess("example.", "www.example.") { t.Error("parent should sort before child") } }