Files
owniverse/tests/test_effects_player.gd
T

48 lines
1.8 KiB
GDScript

extends SceneTree
var checks: int = 0
var failures: int = 0
func _initialize() -> void:
call_deferred("run")
func check(condition: bool, message: String) -> void:
checks += 1
if not condition:
failures += 1
push_error(message)
func run() -> void:
var player := OwniverseEffectsPlayer.new()
root.add_child(player)
check(player.play_effect("select"), "Known effect starts")
check(player.stream == player._effects.select and player.playing, "Selected effect is playing")
var selected_stream: AudioStream = player.stream
check(not player.play_effect("select"), "Playing effect is not restarted")
check(player.stream == selected_stream and player.playing, "Rejected duplicate keeps current playback")
player.stop()
check(not player.play_effect("select"), "Named effect is rejected during its two-second cooldown")
check(player.play_effect("blast"), "Different effect starts without waiting for another name")
player.stop()
player._last_played_msec.select -= player.EFFECT_COOLDOWN_MSEC
check(player.play_effect("select"), "Named effect starts after its cooldown")
check(not player.play_effect("missing_effect"), "Unknown effect is rejected")
check(player.stream == player._effects.select, "Unknown effect does not interrupt playback")
player.set_enabled(false)
check(player.stream_paused, "Disabling effects pauses current playback")
check(not player.play_effect("blast") and player.stream == player._effects.select, "Disabled player rejects new effects")
player.set_enabled(true)
check(not player.stream_paused, "Enabling effects resumes current playback")
player.stop()
player.stream = null
player.free()
await process_frame
print("Effects player: %d checks, %d failures" % [checks, failures])
quit(0 if failures == 0 else 1)