| // Code generated by "go test -run=Generate -write=all"; DO NOT EDIT. |
| // Source: ../../cmd/compile/internal/types2/trie_test.go |
| |
| // Copyright 2026 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package types |
| |
| import ( |
| "fmt" |
| "testing" |
| ) |
| |
| func TestTrie(t *testing.T) { |
| strie := make(trie[string]) |
| |
| okay := func(index ...int) { |
| s := fmt.Sprintf("%x", index) |
| if p, n := strie.insert(index, s); n != 0 { |
| t.Errorf("%s collided with %s (n = %d)", s, p, n) |
| } |
| } |
| |
| fail := func(collision string, index ...int) { |
| s := fmt.Sprintf("%x", index) |
| if p, n := strie.insert(index, s); n == 0 { |
| t.Errorf("%s did not collide", s) |
| } else if p != collision { |
| t.Errorf("%s collided with %s (n == %d), want %s", s, p, n, collision) |
| } |
| } |
| |
| clear(strie) |
| okay(0) |
| fail("[0]", 0) |
| |
| clear(strie) |
| okay(0) |
| fail("[0]", 0, 1, 2, 3, 4, 5) |
| |
| clear(strie) |
| okay(1, 2) |
| okay(1, 3) |
| okay(1, 4, 5) |
| okay(1, 4, 2) |
| fail("[1 4 2]", 1, 4) |
| fail("[1 4 5]", 1, 4, 5) |
| okay(1, 4, 3) |
| okay(2, 1) |
| okay(2, 2) |
| fail("[2 2]", 2, 2, 3) |
| |
| clear(strie) |
| okay(0, 1, 2, 3, 4, 5) |
| okay(0, 1, 2, 3, 4, 6) |
| okay(0, 1, 2, 3, 4, 7) |
| okay(0, 1, 2, 3, 4, 8, 1) |
| okay(0, 1, 2, 3, 4, 4) |
| fail("[0 1 2 3 4 4]", 0, 1, 2, 3) |
| } |
| |
| func TestAnyValue(t *testing.T) { |
| atrie := make(trie[any]) // allow values of any type |
| |
| val := new(42) |
| alt, n := atrie.insert([]int{0}, val) |
| if n != 0 { |
| t.Errorf("unexpected collision (n = %d)", n) |
| } |
| if alt != val { |
| t.Errorf("unexpected result (alt = %#x, val = %#x)", alt, val) |
| } |
| |
| alt, n = atrie.insert([]int{0}, val) // nil is a valid value |
| if n == 0 { |
| t.Errorf("expected collision") |
| } |
| if alt != val { |
| t.Errorf("unexpected result (alt = %#x, val = %#x)", alt, val) |
| } |
| } |