diff options
author | Julien Dessaux | 2021-01-12 15:55:41 +0100 |
---|---|---|
committer | Julien Dessaux | 2021-01-12 15:55:41 +0100 |
commit | 8c03774e1f05a1b9a87c5231562ba39989604773 (patch) | |
tree | a40aa7a2535ac565964059f798afb65a747e6416 /config | |
parent | Continued implementing config validation (diff) | |
download | shell-game-launcher-8c03774e1f05a1b9a87c5231562ba39989604773.tar.gz shell-game-launcher-8c03774e1f05a1b9a87c5231562ba39989604773.tar.bz2 shell-game-launcher-8c03774e1f05a1b9a87c5231562ba39989604773.zip |
Updated menu tests to account properly for duplicate keys
Diffstat (limited to 'config')
-rw-r--r-- | config/config.go | 2 | ||||
-rw-r--r-- | config/menu.go | 9 | ||||
-rw-r--r-- | config/menu_test.go | 19 |
3 files changed, 7 insertions, 23 deletions
diff --git a/config/config.go b/config/config.go index 1deaf04..aa1672a 100644 --- a/config/config.go +++ b/config/config.go @@ -4,7 +4,7 @@ import ( "os" "github.com/pkg/errors" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) type Config struct { diff --git a/config/menu.go b/config/menu.go index 004c7fe..a442036 100644 --- a/config/menu.go +++ b/config/menu.go @@ -47,13 +47,12 @@ func (m *Menu) validate(name string) error { return errors.New("YOffset must be a positive integer") } // MenuEntries - keys := make(map[string]bool) + if len(m.MenuEntries) == 0 { + return errors.New("A Menu needs MenuEntries to be valid") + } + // Duplicate detection is natively handled by the yaml parser for i := 0; i < len(m.MenuEntries); i++ { m.MenuEntries[i].validate() - if _, duplicate := keys[m.MenuEntries[i].Key]; duplicate { - return errors.New("A Menu has a duplicate key " + m.MenuEntries[i].Key) - } - keys[m.MenuEntries[i].Key] = true if m.MenuEntries[i].Action == "menu "+name { return errors.New("A menu shall not loop on itself") } diff --git a/config/menu_test.go b/config/menu_test.go index 98405c7..d0b1805 100644 --- a/config/menu_test.go +++ b/config/menu_test.go @@ -26,24 +26,9 @@ func TestMenuValidate(t *testing.T) { t.Fatal("Negative YOffset should not be valid") } // MenuEntries are mostly tested bellow - menu = Menu{ - XOffset: 1, - YOffset: 1, - MenuEntries: []MenuEntry{ - MenuEntry{ - Key: "a", - Label: "test", - Action: "quit", - }, - MenuEntry{ - Key: "a", - Label: "duplicate", - Action: "quit", - }, - }, - } + menu = Menu{} if err := menu.validate("test"); err == nil { - t.Fatal("Duplicate Keys in MenuEntries should not be allowed") + t.Fatal("A menu without menu entries should not be valid") } // loop menu menu = Menu{ |