Files
TheTree_mock/tests/mvp/test_premium_room.gd
T
Takeshi 5dde0c5ec2 Record original-alignment implementation and traceability checkpoint
Capture current source, content data, tests, asset licenses, and original-specification traceability. Original implementation remains incomplete. The accepted matching UI generation passed 154 suites and 12,253 checks, with eight rendered staff-contract screens reviewed. Latest native Windows and full-original acceptance remain outstanding.
2026-09-30 23:52:24 +09:00

49 lines
3.6 KiB
GDScript

extends SceneTree
var checks := 0
var failures := 0
func expect(ok: bool, message: String) -> void:
checks += 1
if not ok: failures += 1; push_error(message)
func _initialize() -> void: call_deferred("run")
func run() -> void:
var runtime: Variant = load("res://autoload/simulation_runtime.gd").new()
var clock: Variant = load("res://autoload/game_clock.gd").new()
var state: Variant = load("res://autoload/game_state.gd").new()
clock.reset(1,6,0);state.reset();runtime.initialize(clock,state,42501);clock.set_paused(true)
var definition: FacilityDefinition = runtime.definition_registry.get_facility(&"premium_room")
expect(definition != null and definition.footprint == Vector2i(4,1), "normal Runtime registers original-size premium room")
expect(definition.maintenance_gold == 5 and definition.customer_capacity == 2, "daily upkeep follows approved half-percent initial rule and people limit is explicit")
expect(runtime.submit_command(&"build_facility",{&"definition_id":&"reception",&"origin":Vector3i(-6,0,0)}).is_success(), "build supporting reception")
clock.advance_minutes(120)
var built: CommandResult = runtime.submit_command(&"build_facility",{&"definition_id":&"premium_room",&"origin":Vector3i(-6,2,0)})
expect(built.is_success(), "normal construction command accepts premium room")
if not built.is_success(): runtime.free();clock.free();state.free();quit(failures);return
clock.advance_minutes(150)
var id: StringName = &""
for room: FacilityInstance in runtime.facility_service.get_instances():
if room.definition_id == &"premium_room": id = room.instance_id
expect(not id.is_empty(), "premium room completes into operating facility service")
if id.is_empty(): runtime.free();clock.free();state.free();quit(failures);return
expect(runtime.facility_service.get_instance(id).occupied_cells.size()==4, "operating room owns four original cells")
expect(runtime.submit_command(&"register_guest_wallet",{&"guest_id":&"premium_payer",&"gold":1000}).is_success(), "fund service fixture wallet")
var requested: CommandResult = runtime.submit_command(&"create_service_request",{&"request_id":&"premium_stay",&"facility_id":id,&"guest_ids":[&"premium_payer"],&"service_type":&"lodging"})
expect(requested.is_success(), "premium stay enters normal service queue at definition price")
clock.advance_one_minute()
var active: Array = runtime.facility_service.get_active_services(id)
expect(active.size()==1, "normal operating tick starts premium lodging")
if active.is_empty(): runtime.free();clock.free();state.free();quit(failures);return
var service_id: StringName = active[0].service_id
expect(active[0].duration_minutes==720 and active[0].price_snapshot==220, "premium lodging uses existing duration and price")
clock.advance_minutes(360)
var halfway: Dictionary = runtime.create_snapshot()
expect(runtime.restore_snapshot(halfway), "mid-stay current-schema snapshot restores")
clock.advance_minutes(361)
var completed: ServiceInstance = runtime.facility_service.get_service(service_id)
expect(completed.state==ServiceInstance.State.COMPLETED, "restored premium stay completes")
expect(runtime.economy_service.get_balance(&"GUEST_WALLET:premium_payer")==780, "premium stay charges exactly 220 gold once")
expect(runtime.economy_service.validate_ledger()[&"ok"], "premium revenue balances the ledger")
clock.advance_minutes(1440-clock.absolute_minute)
expect(runtime.restore_snapshot(runtime.create_snapshot()), "midnight upkeep and premium room persist together")
runtime.free();clock.free();state.free()
print("Premium room integration: %d checks, %d failures" % [checks,failures]);quit(failures)