Files
open-wc/src/tools/verify_domain_identities.gd
T
sindoring c1dc07c705 feat(M01): add typed domain identities
Work-Package: M01-FND-DOMAIN-IDENTITIES-001

Agent: sindo-main-codex
2026-07-13 16:11:00 +04:00

88 lines
4.4 KiB
GDScript

extends SceneTree
## Headless M01 contract verification for non-interchangeable identity values.
const ContentIdScript = preload("res://src/domain/identity/content_id.gd")
const EntityIdScript = preload("res://src/domain/identity/entity_id.gd")
const WowGuidScript = preload("res://src/domain/identity/wow_guid.gd")
const ServerEntryIdScript = preload("res://src/domain/identity/server_entry_id.gd")
func _initialize() -> void:
var failures: Array[String] = []
_verify_content_id(failures)
_verify_entity_id(failures)
_verify_wow_guid(failures)
_verify_server_entry_id(failures)
_verify_scene_free_sources(failures)
if not failures.is_empty():
for failure in failures:
push_error("DOMAIN_IDENTITIES: %s" % failure)
quit(1)
return
print("DOMAIN_IDENTITIES PASS content=5 entity=5 wow_guid=6 server_entry=5")
quit(0)
func _verify_content_id(failures: Array[String]) -> void:
var normalized = ContentIdScript.new(" 123E4567-E89B-42D3-A456-426614174000 ")
_expect_true(normalized.is_valid(), "normalized ContentId is valid", failures)
_expect_equal(normalized.to_key(), "123e4567-e89b-42d3-a456-426614174000", "ContentId canonical key", failures)
_expect_true(normalized.equals(ContentIdScript.new("123e4567-e89b-42d3-a456-426614174000")), "equal ContentIds", failures)
_expect_true(not normalized.equals(ContentIdScript.new("123e4567-e89b-42d3-a456-426614174001")), "different ContentIds", failures)
_expect_true(not ContentIdScript.new("123e4567e89b42d3a456426614174000").is_valid(), "malformed ContentId", failures)
func _verify_entity_id(failures: Array[String]) -> void:
var entity_id = EntityIdScript.new(42)
_expect_true(entity_id.is_valid(), "positive EntityId", failures)
_expect_true(not EntityIdScript.new(0).is_valid(), "zero EntityId", failures)
_expect_true(not EntityIdScript.new(-1).is_valid(), "negative EntityId", failures)
_expect_true(entity_id.equals(EntityIdScript.new(42)), "equal EntityIds", failures)
_expect_equal(entity_id.to_debug_key(), "entity:42", "EntityId diagnostic key", failures)
func _verify_wow_guid(failures: Array[String]) -> void:
var guid = WowGuidScript.new(0xf1300000, 0xffffffff)
_expect_true(guid.has_valid_word_ranges(), "maximum GUID low word", failures)
_expect_equal(guid.to_hex_string(), "f1300000ffffffff", "GUID hexadecimal form", failures)
_expect_true(guid.equals(WowGuidScript.new(0xf1300000, 0xffffffff)), "equal GUID words", failures)
_expect_true(WowGuidScript.new(0, 0).is_empty(), "zero GUID sentinel", failures)
_expect_true(not WowGuidScript.new(-1, 0).has_valid_word_ranges(), "negative GUID word", failures)
_expect_true(not WowGuidScript.new(0x100000000, 0).has_valid_word_ranges(), "overflow GUID word", failures)
func _verify_server_entry_id(failures: Array[String]) -> void:
var creature_entry = ServerEntryIdScript.new(" Creature_Template ", 123)
var gameobject_entry = ServerEntryIdScript.new("gameobject_template", 123)
_expect_true(creature_entry.is_valid(), "namespaced server entry", failures)
_expect_equal(creature_entry.to_key(), "creature_template:123", "server entry key", failures)
_expect_true(not creature_entry.equals(gameobject_entry), "cross-table entry collision prevented", failures)
_expect_true(not ServerEntryIdScript.new("", 123).is_valid(), "missing entry namespace", failures)
_expect_true(not ServerEntryIdScript.new("creature_template", 0).is_valid(), "zero server entry", failures)
func _verify_scene_free_sources(failures: Array[String]) -> void:
for file_name in ["content_id.gd", "entity_id.gd", "wow_guid.gd", "server_entry_id.gd"]:
var path := "res://src/domain/identity/%s" % file_name
var file := FileAccess.open(path, FileAccess.READ)
if file == null:
failures.append("cannot open %s" % path)
continue
var source := file.get_as_text()
_expect_true(not source.contains("extends Node"), "%s does not inherit Node" % file_name, failures)
_expect_true(not source.contains("extends Resource"), "%s does not inherit Resource" % file_name, failures)
_expect_true(not source.contains("Vector3"), "%s does not expose Vector3" % file_name, failures)
func _expect_equal(actual_value, expected_value, label: String, failures: Array[String]) -> void:
if actual_value != expected_value:
failures.append("%s expected %s, got %s" % [label, expected_value, actual_value])
func _expect_true(actual_value: bool, label: String, failures: Array[String]) -> void:
if not actual_value:
failures.append("%s expected true" % label)