Randoloot/tests/distant_expeditions_checks.gd
2026-10-20 19:53:03 +02:00

38 lines
2.0 KiB
GDScript

@tool
extends Node
const DATA := preload("res://scripts/planets/distant_expeditions.gd")
func run_checks() -> Dictionary:
var failures: Array[String] = []
var profile := {}
for seed_value in 1000:
var candidate := {"id":"test:%d" % seed_value,"seed":seed_value,"name":"Test"}
if DATA.has_hermit(candidate):
profile = candidate
break
for source in [1,120,125,130,500]:
for seed_value in 100:
var candidate := {"id":"test:%d" % seed_value,"seed":seed_value,"name":"Test"}
var map := DATA.offer(candidate,source)
if int(map.level) < source+1 or int(map.level) > source+5: failures.append("Wrong destination range")
if map != DATA.offer(candidate,source): failures.append("Offer rerolled")
if DATA.map_cost(map) != int(map.level)*1000: failures.append("Wrong credits")
if DATA.fuel_cost(map) != int(map.level)*1000: failures.append("Wrong fuel")
var captain = preload("res://scripts/captain/captain_progress.gd").new()
var progress: Resource = captain.expedition
var map := DATA.offer(profile,120)
var price := DATA.map_cost(map)
captain.credits = price-1
if DATA.buy(progress,captain,profile,120): failures.append("Bought without credits")
if captain.credits != price-1 or not progress.distant_maps.is_empty(): failures.append("Failed purchase mutated state")
captain.credits = price
progress.deuter = 500000
if not DATA.buy(progress,captain,profile,120): failures.append("Purchase failed")
if captain.credits != 0 or progress.distant_maps.size() != 1: failures.append("Wrong payment or archive")
captain.credits = price
if DATA.buy(progress,captain,profile,120): failures.append("Duplicate purchase")
if captain.credits != price: failures.append("Duplicate charged")
if progress.deuter != 500000: failures.append("Purchase consumed fuel")
var clone: Resource = progress.duplicate(true)
if clone.distant_maps != progress.distant_maps: failures.append("Archive not preserved")
return {"failures":failures,"offers_checked":500,"beyond_120_supported":true}