| // 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 impl |
| |
| import "testing" |
| |
| func TestResetRestoresAllImplementations(t *testing.T) { |
| defer func(saved []implementation) { allImplementations = saved }(allImplementations) |
| |
| first, second, unavailable := true, true, false |
| Register("testpkg", "First", &first) |
| Register("testpkg", "Second", &second) |
| Register("testpkg", "Unavailable", &unavailable) |
| |
| if !Select("testpkg", "First") { |
| t.Fatal("Select reported an available implementation as unavailable") |
| } |
| if second { |
| t.Error("Select left another implementation enabled") |
| } |
| Select("testpkg", "") |
| |
| Reset("testpkg") |
| for _, tc := range []struct { |
| name string |
| got bool |
| want bool |
| }{ |
| {"First", first, true}, |
| {"Second", second, true}, |
| {"Unavailable", unavailable, false}, |
| } { |
| if tc.got != tc.want { |
| t.Errorf("after Reset, %s is %v, want %v", tc.name, tc.got, tc.want) |
| } |
| } |
| } |