extends "res://addons/gut/test.gd" const DmResponse = preload("res://scripts/net/dm_response.gd") const NarrateResult = preload("res://scripts/net/narrate_result.gd") const NpcResult = preload("res://scripts/net/npc_result.gd") const DmTransport = preload("res://scripts/net/dm_transport.gd") const ProxyConfig = preload("res://scripts/net/proxy_config.gd") func test_dm_response_ok(): var r = DmResponse.ok(200, {"prose": "hi"}) assert_eq(r.status, 200) assert_true(r.transport_ok) assert_eq(r.body, {"prose": "hi"}) assert_eq(r.error, "") func test_dm_response_failed(): var r = DmResponse.failed("boom") assert_false(r.transport_ok) assert_eq(r.status, 0) assert_eq(r.body, null) assert_eq(r.error, "boom") func test_narrate_result_basic(): var r = NarrateResult.new("text", ["a"], false) assert_eq(r.display_text, "text") assert_eq(r.facts, ["a"]) assert_false(r.degraded) func test_narrate_result_fallback(): var r = NarrateResult.fallback("cold chamber") assert_eq(r.display_text, "cold chamber") assert_eq(r.facts, []) assert_true(r.degraded) func test_transport_base_returns_not_implemented(): var t = DmTransport.new() var r = await t.post_json("/x", {}) assert_false(r.transport_ok) assert_eq(r.error, "transport not implemented") func test_proxy_config_default(): ProjectSettings.set_setting(ProxyConfig.SETTING, null) assert_eq(ProxyConfig.base_url(), ProxyConfig.DEFAULT) func test_proxy_config_override(): ProjectSettings.set_setting(ProxyConfig.SETTING, "http://example.test:9000") assert_eq(ProxyConfig.base_url(), "http://example.test:9000") ProjectSettings.set_setting(ProxyConfig.SETTING, null) func test_npc_result_fallback_is_degraded_with_no_moves(): var r = NpcResult.fallback("The figure says nothing.") assert_true(r.degraded) assert_eq(r.display_text, "The figure says nothing.") assert_eq(r.valid_moves, []) assert_eq(r.facts, []) assert_false(r.ends_conversation)