bad2fbe65f
Replaces placeholder AudioManager with full implementation: floor-based music routing via _derive_floor_from_room, cross-fade tween between AudioStreamPlayers, SFX event-key dispatch, and room-change guard to prevent redundant load attempts. 11 new tests (207 total, 206 passing). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
72 lines
2.4 KiB
GDScript
72 lines
2.4 KiB
GDScript
## Tests for AudioManager — floor derivation, no-op guard, SFX key validation.
|
|
extends GutTest
|
|
|
|
|
|
func before_each() -> void:
|
|
AudioManager._current_floor = -1
|
|
AudioManager._is_crossfading = false
|
|
|
|
|
|
func test_derive_floor_floor0_reception() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("reception"), 0)
|
|
|
|
|
|
func test_derive_floor_floor0_all_rooms() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("giftshop"), 0)
|
|
assert_eq(AudioManager._derive_floor_from_room("restaurant"), 0)
|
|
assert_eq(AudioManager._derive_floor_from_room("emergency"), 0)
|
|
|
|
|
|
func test_derive_floor_floor1_all_rooms() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("xray"), 1)
|
|
assert_eq(AudioManager._derive_floor_from_room("pharmacy"), 1)
|
|
assert_eq(AudioManager._derive_floor_from_room("lab"), 1)
|
|
assert_eq(AudioManager._derive_floor_from_room("patient_rooms"), 1)
|
|
|
|
|
|
func test_derive_floor_floor2_all_rooms() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("ultrasound"), 2)
|
|
assert_eq(AudioManager._derive_floor_from_room("delivery_room"), 2)
|
|
assert_eq(AudioManager._derive_floor_from_room("nursery"), 2)
|
|
|
|
|
|
func test_derive_floor_garden() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("garden_party"), 3)
|
|
|
|
|
|
func test_derive_floor_unknown_returns_minus_one() -> void:
|
|
assert_eq(AudioManager._derive_floor_from_room("unknown_room"), -1)
|
|
assert_eq(AudioManager._derive_floor_from_room(""), -1)
|
|
|
|
|
|
func test_get_current_floor_starts_at_minus_one() -> void:
|
|
assert_eq(AudioManager.get_current_floor(), -1)
|
|
|
|
|
|
func test_play_floor_music_same_floor_is_noop() -> void:
|
|
AudioManager._current_floor = 0
|
|
AudioManager.play_floor_music(0)
|
|
assert_eq(AudioManager.get_current_floor(), 0)
|
|
|
|
|
|
func test_play_sfx_unknown_key_does_not_crash() -> void:
|
|
AudioManager.play_sfx("nonexistent_event_xyz")
|
|
pass
|
|
|
|
|
|
func test_sfx_map_has_all_seven_keys() -> void:
|
|
assert_true(AudioManager._SFX_MAP.has("chest_tap"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_spawn"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_drag_start"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_drop_hand"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_drop_outfit"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_return_chest"))
|
|
assert_true(AudioManager._SFX_MAP.has("item_drop_floor"))
|
|
|
|
|
|
func test_music_map_has_all_four_floors() -> void:
|
|
assert_true(AudioManager._MUSIC_MAP.has(0))
|
|
assert_true(AudioManager._MUSIC_MAP.has(1))
|
|
assert_true(AudioManager._MUSIC_MAP.has(2))
|
|
assert_true(AudioManager._MUSIC_MAP.has(3))
|