mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
47 lines
2.4 KiB
GDScript
47 lines
2.4 KiB
GDScript
extends "res://tests/test_case.gd"
|
|
|
|
const AudioManager = preload("res://scripts/audio_manager.gd")
|
|
|
|
|
|
func test_audio_intensity_fails_closed_and_clamps() -> void:
|
|
assert_eq(AudioManager.clamp_intensity(-1.0), 0.0, "negative impact is silent")
|
|
assert_eq(AudioManager.clamp_intensity(INF), 0.0, "infinite impact is silent")
|
|
assert_eq(AudioManager.clamp_intensity(0.5), 0.5, "normal impact is retained")
|
|
assert_eq(AudioManager.clamp_intensity(4.0), 1.0, "oversized impact is capped")
|
|
|
|
|
|
func test_countdown_frequency_has_bounded_monotonic_mapping() -> void:
|
|
assert_eq(AudioManager.countdown_frequency(0), 495.0, "zero uses the first safe tone")
|
|
assert_eq(AudioManager.countdown_frequency(3), 605.0, "countdown tone is deterministic")
|
|
assert_eq(AudioManager.countdown_frequency(99), 935.0, "large countdown values are capped")
|
|
assert_true(AudioManager.countdown_frequency(2) < AudioManager.countdown_frequency(3), "countdown tones rise predictably")
|
|
|
|
|
|
func test_button_binding_is_idempotent() -> void:
|
|
var manager := AudioManager.new()
|
|
var button := Button.new()
|
|
manager.bind_button(button)
|
|
manager.bind_button(button)
|
|
assert_eq(button.pressed.get_connections().size(), 1, "UI click hook is not duplicated")
|
|
button.free()
|
|
manager.free()
|
|
|
|
|
|
func test_engine_mix_is_bounded_and_turbo_is_audible() -> void:
|
|
assert_eq(AudioManager.engine_pitch(-1.0, false), 0.75, "negative thrust uses the idle pitch")
|
|
assert_true(AudioManager.engine_pitch(1.0, true) > AudioManager.engine_pitch(1.0, false), "turbo raises engine pitch")
|
|
assert_true(AudioManager.engine_volume(1.0, true) > AudioManager.engine_volume(1.0, false), "turbo raises engine volume")
|
|
assert_true(AudioManager.engine_volume(100.0, true) <= 0.1, "engine volume remains bounded")
|
|
|
|
|
|
func test_turbo_state_is_only_a_rising_edge_for_the_engine_cue() -> void:
|
|
assert_true(AudioManager.should_play_turbo_cue(false, true, 0.8), "turbo engagement emits a cue")
|
|
assert_true(not AudioManager.should_play_turbo_cue(true, true, 0.8), "held turbo does not retrigger")
|
|
assert_true(not AudioManager.should_play_turbo_cue(false, true, 0.0), "turbo at idle thrust is silent")
|
|
assert_true(not AudioManager.should_play_turbo_cue(false, false, 0.8), "ordinary thrust emits no turbo cue")
|
|
|
|
|
|
func test_wall_scrape_intensity_reuses_the_same_safe_bounds() -> void:
|
|
assert_eq(AudioManager.clamp_intensity(-2.0), 0.0, "reverse wall intensity is silent")
|
|
assert_eq(AudioManager.clamp_intensity(2.0), 1.0, "wall intensity is capped")
|