From b4dc5d6841f7ded5995e5f308509b1a3a034cbed Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Thu, 24 Dec 2020 15:18:24 +0100 Subject: Began implementing config validation --- config/menu_test.go | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 config/menu_test.go (limited to 'config/menu_test.go') diff --git a/config/menu_test.go b/config/menu_test.go new file mode 100644 index 0000000..98405c7 --- /dev/null +++ b/config/menu_test.go @@ -0,0 +1,103 @@ +package config + +import "testing" + +func TestMenuValidate(t *testing.T) { + // menu name + menu := Menu{} + if err := menu.validate(""); err == nil { + t.Fatal("Empty menu name is not valid") + } + if err := menu.validate("test test"); err == nil { + t.Fatal("non alphanumeric menu name is not valid") + } + // Banner is just any string, nothing to validate + // XOffset + menu = Menu{XOffset: -1} + if err := menu.validate("test"); err == nil { + t.Fatal("Negative XOffset should not be valid") + } + // YOffset + menu = Menu{ + XOffset: 1, + YOffset: -1, + } + if err := menu.validate("test"); err == nil { + 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", + }, + }, + } + if err := menu.validate("test"); err == nil { + t.Fatal("Duplicate Keys in MenuEntries should not be allowed") + } + // loop menu + menu = Menu{ + XOffset: 1, + YOffset: 1, + MenuEntries: []MenuEntry{ + MenuEntry{ + Key: "a", + Label: "test", + Action: "menu test", + }, + }, + } + if err := menu.validate("test"); err == nil { + t.Fatal("A menu should not be able to loop on itself") + } + // A valid menu + menu = Menu{ + XOffset: 1, + YOffset: 1, + MenuEntries: []MenuEntry{ + MenuEntry{ + Key: "a", + Label: "test", + Action: "quit", + }, + }, + } + if err := menu.validate("test"); err != nil { + t.Fatal("A valid menu should pass") + } +} + +func TestMenuEntryValidate(t *testing.T) { + // Key + menuEntry := MenuEntry{} + if err := menuEntry.validate(); err == nil { + t.Fatal("A Key cannot be empty") + } + menuEntry = MenuEntry{Key: "ab"} + if err := menuEntry.validate(); err == nil { + t.Fatal("A Key should be only one character") + } + menuEntry = MenuEntry{Key: " "} + if err := menuEntry.validate(); err == nil { + t.Fatal("A Key should be a printable character") + } + // Label + menuEntry = MenuEntry{ + Key: "l", + Label: "", + } + if err := menuEntry.validate(); err == nil { + t.Fatal("A Label cannot be empty") + } + // Actions are tested in action_test.go +} -- cgit v1.2.3