aboutsummaryrefslogtreecommitdiff
path: root/internal/game/fix_game_regression_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-10-06 12:57:23 -0400
committerhistoria <[not public]>2026-10-06 12:57:23 -0400
commit9666676766bf21364f4fc4d0d1d336e72f2a91b4 (patch)
tree0cade34091d7602790dc38cd44053f0b74bbadf2 /internal/game/fix_game_regression_test.go
parent4bc1daaf259e0c19c5fe4a12ec8bc7f6e5a735c1 (diff)
downloadthehouseoficarus-9666676766bf21364f4fc4d0d1d336e72f2a91b4.tar.gz
refactor: split casino.go, dedup helpers, remove audit docs
Diffstat (limited to 'internal/game/fix_game_regression_test.go')
-rw-r--r--internal/game/fix_game_regression_test.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/internal/game/fix_game_regression_test.go b/internal/game/fix_game_regression_test.go
new file mode 100644
index 0000000..7edbf8a
--- /dev/null
+++ b/internal/game/fix_game_regression_test.go
@@ -0,0 +1,53 @@
+package game
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestRawArgsFromPreservesCaseAndSkipsVerb(t *testing.T) {
+ cases := []struct {
+ name string
+ raw string
+ verb string
+ want []string
+ }{
+ {"option free text", "option visual_tick_text Tick Tock", "option", []string{"visual_tick_text", "Tick", "Tock"}},
+ {"options fallback", "options visual_tick_text Tick", "option", []string{"visual_tick_text", "Tick"}},
+ {"alias case", "alias g Say Hi", "alias", []string{"g", "Say", "Hi"}},
+ {"collapsed whitespace", "say hello world", "say", []string{"hello", "world"}},
+ {"room action double space", "room addlocalobj [lamp] A brass lamp", "room", []string{"addlocalobj", "[lamp]", "A", "brass", "lamp"}},
+ }
+ for _, tc := range cases {
+ t.Run(tc.name, func(t *testing.T) {
+ got := rawArgsFrom(tc.raw, tc.verb)
+ if !reflect.DeepEqual(got, tc.want) {
+ t.Fatalf("rawArgsFrom(%q, %q) = %#v, want %#v", tc.raw, tc.verb, got, tc.want)
+ }
+ })
+ }
+}
+
+func TestParseLocalObjArgsUsesSplitRest(t *testing.T) {
+ name, aliases, desc := parseLocalObjArgs("[lamp] A brass lamp")
+ if name != "lamp" || len(aliases) != 0 || desc != "A brass lamp" {
+ t.Fatalf("bracket form = (%q, %v, %q)", name, aliases, desc)
+ }
+ name, aliases, desc = parseLocalObjArgs("[vase, urn] A clay pot")
+ if name != "vase" || !reflect.DeepEqual(aliases, []string{"urn"}) || desc != "A clay pot" {
+ t.Fatalf("bracket aliases = (%q, %v, %q)", name, aliases, desc)
+ }
+ name, aliases, desc = parseLocalObjArgs("lamp A brass lamp")
+ if name != "lamp" || aliases != nil || desc != "A brass lamp" {
+ t.Fatalf("plain form = (%q, %v, %q)", name, aliases, desc)
+ }
+}
+
+func TestCountUniqueNonEmpty(t *testing.T) {
+ if got := countUniqueNonEmpty([]string{"a", "b", "a", ""}); got != 2 {
+ t.Fatalf("countUniqueNonEmpty = %d, want 2", got)
+ }
+ if got := countUniqueNonEmpty(nil); got != 0 {
+ t.Fatalf("countUniqueNonEmpty(nil) = %d, want 0", got)
+ }
+}