Files
step3/tests/simulation_review_test.gd
T

40 lines
2.1 KiB
GDScript

extends SceneTree
var failures := 0
func _initialize() -> void:
var review_script = load("res://scripts/ui/simulation_review.gd")
_assert(review_script._matches_filter("all", "A", "B", false), "all should include every response")
_assert(review_script._matches_filter("incorrect", "A", "B", false), "incorrect should include wrong answers")
_assert(not review_script._matches_filter("incorrect", "", "B", false), "incorrect should exclude unanswered questions")
_assert(review_script._matches_filter("unanswered", "", "B", false), "unanswered should include blank responses")
_assert(review_script._matches_filter("flagged", "B", "B", true), "flagged should include flagged correct responses")
_assert(not review_script._matches_filter("flagged", "A", "B", false), "flagged should exclude unflagged responses")
var review = review_script.new()
get_root().add_child(review)
await process_frame
review.on_show({
"reviewQuestions": [
{"externalId": "q1", "stem": "Stem one", "leadIn": "Lead one", "choices": [{"id": "A", "text": "One"}, {"id": "B", "text": "Two"}], "correctChoiceId": "A", "choiceExplanations": {"A": "Correct", "B": "Wrong"}, "explanation": "Overall", "labs": [], "media": [], "references": []},
{"externalId": "q2", "stem": "Stem two", "leadIn": "Lead two", "choices": [{"id": "A", "text": "One"}, {"id": "B", "text": "Two"}], "correctChoiceId": "B", "choiceExplanations": {}, "explanation": "Overall", "labs": [], "media": [], "references": []}
],
"responses": [{"questionExternalId": "q1", "choiceId": "B", "flagged": true}]
})
_assert(review.filtered_indices.size() == 2, "all filter should build a complete review set")
review._set_filter("incorrect")
_assert(review.filtered_indices == [0], "incorrect filter should retain only answered misses")
review._set_filter("unanswered")
_assert(review.filtered_indices == [1], "unanswered filter should retain blank responses")
await process_frame
review.queue_free()
await process_frame
quit(1 if failures > 0 else 0)
func _assert(condition: bool, message: String) -> void:
if condition:
return
failures += 1
push_error(message)