// SPDX-License-Identifier: GPL-3.0-or-later package plan import ( "strings" "testing" "krino/internal/config" "krino/internal/enumtest" ) // TestEveryKindIsNamed: every Kind has its own display name and a JSON // action name, and every config.ActionKind maps onto a Kind. Kind and // ActionKind are iota blocks from 0, so the i-th constant is the value i. func TestEveryKindIsNamed(t *testing.T) { kinds, err := enumtest.Names("step.go", "Kind") if err != nil { t.Fatal(err) } seen := map[string]bool{} for i, name := range kinds { k := Kind(i) if s := k.String(); strings.HasPrefix(s, "Kind(") || seen[s] { t.Errorf("%s: String() = %q", name, s) } else { seen[s] = true } if actionNames[k] == "" { t.Errorf("%s has no JSON action name", name) } } actions, err := enumtest.Names("../config/dir.go", "ActionKind") if err != nil { t.Fatal(err) } for i, name := range actions { func() { defer func() { if r := recover(); r != nil { t.Errorf("config.%s has no plan.Kind: %v", name, r) } }() stepKind(config.ActionKind(i)) }() } }