34 lines
1.1 KiB
GDScript
34 lines
1.1 KiB
GDScript
extends "res://addons/gut/test.gd"
|
|
|
|
const ConsideringPhrases = preload("res://scripts/ui/considering_phrases.gd")
|
|
|
|
|
|
func test_missing_file_returns_last_resort():
|
|
var p = ConsideringPhrases.new("res://content/does_not_exist.json")
|
|
assert_eq(p.next(), ConsideringPhrases.LAST_RESORT)
|
|
assert_eq(p.next(), ConsideringPhrases.LAST_RESORT)
|
|
|
|
|
|
func test_cycles_pool_in_order_and_wraps():
|
|
# Real authored file has at least 3 lines; assert order + wrap on it.
|
|
var p = ConsideringPhrases.new() # default path — real content
|
|
var first = p.next()
|
|
var second = p.next()
|
|
assert_ne(first, "")
|
|
assert_ne(first, second) # advances, not stuck
|
|
# Drain a full cycle back to `first` to prove it wraps (bounded loop).
|
|
var seen := [first, second]
|
|
for i in range(20):
|
|
var n = p.next()
|
|
if n == first:
|
|
return # wrapped — success
|
|
seen.append(n)
|
|
assert_true(false, "did not wrap within 22 calls: %s" % [seen])
|
|
|
|
|
|
func test_index_persists_across_calls_not_reset():
|
|
var p = ConsideringPhrases.new()
|
|
var a = p.next()
|
|
var b = p.next()
|
|
assert_ne(a, b) # second call did not re-return the first phrase
|