extends RefCounted ## Weapon registry tests — uses preload directly (avoids autoload name resolution issue). ## Each test_* method returns "" on pass or an error message on fail. const Wr := preload("res://examples/multiplayer-fps/scripts/data/weapon_registry.gd") func test_all_weapons_registered() -> String: var ids := [1, 2, 3, 4, 5, 6] for id in ids: var w := Wr.get_weapon(id) if w == null: return "Weapon ID %d not registered" % id return "" func test_unknown_id_returns_null() -> String: if Wr.get_weapon(0) != null: return "ID 0 should return null" if Wr.get_weapon(99) != null: return "ID 99 should return null" if Wr.get_weapon(-1) != null: return "ID -1 should return null" return "" func test_ak47_stats() -> String: var w := Wr.get_weapon(4) if w == null: return "AK47 not found" var e := "" if w.damage != 36: e += " damage: got %d, expected 36" % w.damage if w.price != 2500: e += " price: got %d, expected 2500" % w.price if w.fire_mode != 1: e += " fire_mode: got %d, expected 1 (AUTO)" % w.fire_mode if w.team != 0: e += " team: got %d, expected 0 (T)" % w.team if w.slot != 2: e += " slot: got %d, expected 2" % w.slot if w.weapon_name != "AK-47": e += " name: got %s" % w.weapon_name return e func test_awp_stats() -> String: var w := Wr.get_weapon(6) if w == null: return "AWP not found" var e := "" if w.damage != 110: e += " damage: got %d, expected 110" % w.damage if w.price != 4750: e += " price: got %d, expected 4750" % w.price if w.fire_mode != 0: e += " fire_mode: got %d, expected 0 (SEMI)" % w.fire_mode if w.weapon_name != "AWP": e += " name: got %s" % w.weapon_name if w.slot != 2: e += " slot: got %d, expected 2" % w.slot return e func test_knife_stats() -> String: var w := Wr.get_weapon(1) if w == null: return "Knife not found" var e := "" if w.damage != 50: e += " damage: got %d, expected 50" % w.damage if w.price != 0: e += " price: got %d, expected 0" % w.price if w.fire_mode != 2: e += " fire_mode: got %d, expected 2 (MELEE)" % w.fire_mode if w.weapon_name != "Knife": e += " name: got %s" % w.weapon_name if w.slot != 0: e += " slot: got %d, expected 0" % w.slot return e func test_default_pistol() -> String: var e := "" var t := Wr.get_default_pistol(0) if t != 2: e += " T side should get Glock (2), got %d" % t var ct := Wr.get_default_pistol(1) if ct != 3: e += " CT side should get USP (3), got %d" % ct return e