Count up question bank answer timer

This commit is contained in:
hz
2026-07-18 15:14:48 -05:00
parent c8c877a3a5
commit 102933db44
4 changed files with 128 additions and 17 deletions
+23
View File
@@ -28,6 +28,29 @@ func _initialize() -> void:
service.session_initial_seconds = 900.0
service.seconds_remaining = 450.0
_assert(is_equal_approx(service.get_session_timer_ratio(), 0.5), "timed block progress should use the full session duration")
service.session_kind = "core"
service.core_question_display_target_seconds = 100.0
service.core_question_total_elapsed_seconds = 25.0
service.core_question_total_active_since = 0.0
_assert(is_equal_approx(service.get_core_question_total_elapsed_seconds(), 25.0), "core question timer should expose cumulative elapsed time")
_assert(is_equal_approx(service.get_core_question_elapsed_ratio(), 0.25), "core question progress should fill toward its original target")
service._start_core_retry_window()
_assert(is_equal_approx(service.get_core_question_total_elapsed_seconds(), 25.0), "wrong-answer retry windows should not reset cumulative question time")
service.core_question_total_active_since = 100.0
service.core_question_total_elapsed_seconds = 4.0
service._pause_core_question_total_timer(106.0)
_assert(is_equal_approx(service.get_core_question_total_elapsed_seconds(), 10.0), "pausing should preserve accumulated question time")
service.core_question_total_elapsed_seconds = 0.0
service.core_question_total_active_since = 0.001
service._freeze_core_question_total_timer()
var frozen_elapsed: float = service.get_core_question_total_elapsed_seconds()
OS.delay_msec(10)
_assert(is_equal_approx(service.get_core_question_total_elapsed_seconds(), frozen_elapsed), "freezing should stop cumulative question time")
var resume_now := Time.get_ticks_msec() / 1000.0
service.current_question_started_at = maxf(0.001, resume_now - 5.0)
service.current_question_pause_started_at = maxf(0.001, resume_now - 0.001)
service.resume_current_question_timer()
_assert(service.core_question_total_active_since == 0.0, "a completed core question timer should not restart")
service.free()
quit(1 if failures > 0 else 0)