fix(client): address PR #40 review — 13 suggestions
- Rename _insert to insert_state in main.gd (Hoshe #1) - Add after_each() to test_bug_report_ring_buffer.gd for GameState cleanup on assertion failure (Hoshe #2) - Add after_each() to test_insert_off_behavior.gd for stance/interaction restore on assertion failure (Hoshe #3) - Fix assertion message: "unknown" → "unavailable" (Hoshe #4) - Document memory ceiling of 60 JSON snapshots in ring buffer (Hoshe #5) - Add precision warning for u64 rng_seed via JSON float (Hoshe #6) - Promote _action_enum_to_wire to public action_enum_to_wire (Tyre #1) - Add @warning_ignore for unused _tick parameter (Tyre #5) - Document insert_active assumption for future no-insert characters (Tyre #4) - Restructure OQ-07 decision amendments as bullet points (Tyre #7) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -518,7 +518,7 @@ func test_bug_report_not_double_activatable() -> void:
|
||||
|
||||
func test_bug_report_action_not_on_wire() -> void:
|
||||
# BUG_REPORT is client-only — must not produce a wire-format action name.
|
||||
var wire_name := SimBridge._action_enum_to_wire(InputMapper.Action.BUG_REPORT)
|
||||
var wire_name := SimBridge.action_enum_to_wire(InputMapper.Action.BUG_REPORT)
|
||||
assert_that(wire_name).override_failure_message(
|
||||
"BUG_REPORT must not produce a wire action name (client-only)"
|
||||
).is_equal("")
|
||||
|
||||
@@ -18,6 +18,21 @@ var BugReportDialogScript = load("res://ui/bug_report_dialog.gd")
|
||||
const EXPECTED_CAPACITY := 60
|
||||
|
||||
|
||||
func after_each() -> void:
|
||||
# Reset GameState fields mutated by tests to prevent cross-test leakage.
|
||||
GameState.current_tick = 0
|
||||
GameState.room_id = null
|
||||
GameState.player_stance = "Walk"
|
||||
GameState.player_facing = "South"
|
||||
GameState.player_position = Vector2.ZERO
|
||||
GameState.visible_entities = []
|
||||
GameState.visible_tiles = []
|
||||
GameState.game_time = {}
|
||||
GameState.current_monologue = null
|
||||
GameState.current_dialogue = null
|
||||
GameState.rng_seed = null
|
||||
|
||||
|
||||
# -- Helpers -------------------------------------------------------------------
|
||||
|
||||
func _make_dialog() -> Control:
|
||||
@@ -285,7 +300,7 @@ func test_seed_written_on_capture() -> void:
|
||||
# Should return some Variant (int or String) without crashing
|
||||
var seed_val = dialog._get_current_seed()
|
||||
assert_that(seed_val != null).override_failure_message(
|
||||
"_get_current_seed() must not return null (use 0 or 'unknown' if seed unavailable)"
|
||||
"_get_current_seed() must not return null (use 0 or 'unavailable' if seed unavailable)"
|
||||
).is_true()
|
||||
|
||||
|
||||
|
||||
@@ -129,13 +129,13 @@ func test_gauntlet_mode_transitions_off() -> void:
|
||||
|
||||
func test_teleport_hub_wire_name() -> void:
|
||||
# TELEPORT_HUB must encode to "TeleportToHub" on the wire (matching Rust PlayerAction)
|
||||
var wire_name := SimBridge._action_enum_to_wire(InputMapper.Action.TELEPORT_HUB)
|
||||
var wire_name := SimBridge.action_enum_to_wire(InputMapper.Action.TELEPORT_HUB)
|
||||
assert_that(wire_name).is_equal("TeleportToHub")
|
||||
|
||||
|
||||
func test_teleport_hub_wire_not_empty() -> void:
|
||||
# Wire name must not be empty (empty = client-only, not sent to server)
|
||||
var wire_name := SimBridge._action_enum_to_wire(InputMapper.Action.TELEPORT_HUB)
|
||||
var wire_name := SimBridge.action_enum_to_wire(InputMapper.Action.TELEPORT_HUB)
|
||||
assert_that(wire_name.is_empty()).is_false()
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,13 @@ class_name TestInsertOffBehavior
|
||||
extends GdUnitTestSuite
|
||||
|
||||
|
||||
func after_each() -> void:
|
||||
# Reset GameState fields mutated by tests to prevent cross-test leakage.
|
||||
GameState.nearby_interactions = []
|
||||
GameState.player_stance = "Walk"
|
||||
GameState.insert_active = true
|
||||
|
||||
|
||||
# -- Helpers -------------------------------------------------------------------
|
||||
|
||||
func _make_cursor() -> Node:
|
||||
|
||||
@@ -268,12 +268,12 @@ func test_insert_off_hides_interaction_list() -> void:
|
||||
|
||||
func test_stance_up_wire_mapping() -> void:
|
||||
# Verify InputMapper.Action.TOGGLE_STANCE_UP maps to "ToggleStanceUp" wire name
|
||||
var wire = SimBridge._action_enum_to_wire(InputMapper.Action.TOGGLE_STANCE_UP)
|
||||
var wire = SimBridge.action_enum_to_wire(InputMapper.Action.TOGGLE_STANCE_UP)
|
||||
assert_that(wire).is_equal("ToggleStanceUp")
|
||||
|
||||
|
||||
func test_stance_down_wire_mapping() -> void:
|
||||
var wire = SimBridge._action_enum_to_wire(InputMapper.Action.TOGGLE_STANCE_DOWN)
|
||||
var wire = SimBridge.action_enum_to_wire(InputMapper.Action.TOGGLE_STANCE_DOWN)
|
||||
assert_that(wire).is_equal("ToggleStanceDown")
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@ func test_all_movement_actions_have_wire_mapping() -> void:
|
||||
InputMapper.Action.TOGGLE_STANCE_DOWN,
|
||||
]
|
||||
for action in actions_with_mapping:
|
||||
var wire = SimBridge._action_enum_to_wire(action)
|
||||
var wire = SimBridge.action_enum_to_wire(action)
|
||||
assert_that(wire.length()).is_greater(0)
|
||||
|
||||
|
||||
|
||||
@@ -163,23 +163,23 @@ func test_action_enum_to_wire_all_directions_clockwise() -> void:
|
||||
]
|
||||
|
||||
for pair in expected:
|
||||
var wire_name := SimBridge._action_enum_to_wire(pair[0])
|
||||
var wire_name := SimBridge.action_enum_to_wire(pair[0])
|
||||
assert_that(wire_name).is_equal(pair[1])
|
||||
|
||||
|
||||
func test_action_enum_to_wire_non_movement() -> void:
|
||||
assert_that(SimBridge._action_enum_to_wire(InputMapper.Action.INTERACT)).is_equal("Interact")
|
||||
assert_that(SimBridge._action_enum_to_wire(InputMapper.Action.USE_PERCEPTION_MODE)).is_equal("UsePerceptionMode")
|
||||
assert_that(SimBridge._action_enum_to_wire(InputMapper.Action.PAUSE)).is_equal("Pause")
|
||||
assert_that(SimBridge.action_enum_to_wire(InputMapper.Action.INTERACT)).is_equal("Interact")
|
||||
assert_that(SimBridge.action_enum_to_wire(InputMapper.Action.USE_PERCEPTION_MODE)).is_equal("UsePerceptionMode")
|
||||
assert_that(SimBridge.action_enum_to_wire(InputMapper.Action.PAUSE)).is_equal("Pause")
|
||||
|
||||
|
||||
func test_action_enum_to_wire_open_menu_returns_empty() -> void:
|
||||
var wire_name := SimBridge._action_enum_to_wire(InputMapper.Action.OPEN_MENU)
|
||||
var wire_name := SimBridge.action_enum_to_wire(InputMapper.Action.OPEN_MENU)
|
||||
assert_that(wire_name).is_equal("")
|
||||
|
||||
|
||||
func test_action_enum_to_wire_unknown_returns_empty() -> void:
|
||||
var wire_name := SimBridge._action_enum_to_wire(9999)
|
||||
var wire_name := SimBridge.action_enum_to_wire(9999)
|
||||
assert_that(wire_name).is_equal("")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user