40 lines
2.1 KiB
GDScript
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)
|