extends Node ## 角色个性化系统测试 ## 测试角色个性化功能的各个方面 func _ready(): """运行所有个性化测试""" print("=== 角色个性化系统测试开始 ===") test_character_data_personalization() test_appearance_generation() test_personality_generation() test_achievement_system() test_experience_and_leveling() test_status_and_mood_system() print("=== 角色个性化系统测试完成 ===") ## 测试角色数据个性化 func test_character_data_personalization(): """测试角色数据的个性化字段""" print("\n--- 测试角色数据个性化 ---") # 创建角色数据 var character_data = CharacterData.create("测试角色", "test_owner") # 验证默认个性化字段存在 assert(character_data.has(CharacterData.FIELD_APPEARANCE), "应该有外观字段") assert(character_data.has(CharacterData.FIELD_PERSONALITY), "应该有个性字段") assert(character_data.has(CharacterData.FIELD_STATUS), "应该有状态字段") assert(character_data.has(CharacterData.FIELD_MOOD), "应该有心情字段") assert(character_data.has(CharacterData.FIELD_LEVEL), "应该有等级字段") assert(character_data.has(CharacterData.FIELD_EXPERIENCE), "应该有经验字段") # 测试设置外观 var new_appearance = { "body_color": "#FF0000", "head_color": "#00FF00" } CharacterData.set_appearance(character_data, new_appearance) assert(character_data[CharacterData.FIELD_APPEARANCE]["body_color"] == "#FF0000", "外观应该被正确设置") # 测试设置状态和心情 CharacterData.set_status(character_data, "busy") CharacterData.set_mood(character_data, "happy") assert(character_data[CharacterData.FIELD_STATUS] == "busy", "状态应该被正确设置") assert(character_data[CharacterData.FIELD_MOOD] == "happy", "心情应该被正确设置") # 测试属性设置 CharacterData.set_attribute(character_data, "charisma", 8) assert(character_data[CharacterData.FIELD_ATTRIBUTES]["charisma"] == 8, "属性应该被正确设置") # 测试技能设置 CharacterData.set_skill(character_data, "communication", 5) assert(character_data[CharacterData.FIELD_SKILLS]["communication"] == 5, "技能应该被正确设置") # 测试成就添加 var achievement = { "id": "test_achievement", "name": "测试成就", "description": "这是一个测试成就" } CharacterData.add_achievement(character_data, achievement) assert(character_data[CharacterData.FIELD_ACHIEVEMENTS].size() == 1, "成就应该被添加") # 测试经验和升级 var leveled_up = CharacterData.add_experience(character_data, 150) assert(leveled_up, "应该升级") assert(character_data[CharacterData.FIELD_LEVEL] == 2, "等级应该提升到2") print("✅ 角色数据个性化测试通过") ## 测试外观生成 func test_appearance_generation(): """测试外观生成功能""" print("\n--- 测试外观生成 ---") # 生成随机外观 var appearance = CharacterPersonalization.generate_random_appearance() # 验证必需字段 assert(appearance.has("body_color"), "应该有身体颜色") assert(appearance.has("head_color"), "应该有头部颜色") assert(appearance.has("hair_color"), "应该有头发颜色") assert(appearance.has("clothing_color"), "应该有服装颜色") # 验证颜色格式 assert(appearance["body_color"].begins_with("#"), "身体颜色应该是十六进制格式") assert(appearance["body_color"].length() == 7, "身体颜色应该是7位十六进制") # 验证外观数据 assert(CharacterPersonalization.validate_appearance(appearance), "生成的外观应该有效") print("✅ 外观生成测试通过") ## 测试个性生成 func test_personality_generation(): """测试个性生成功能""" print("\n--- 测试个性生成 ---") # 生成随机个性 var personality = CharacterPersonalization.generate_random_personality() # 验证字段 assert(personality.has("traits"), "应该有特征字段") assert(personality.has("favorite_activity"), "应该有喜欢的活动字段") # 验证特征数量 var traits = personality["traits"] assert(traits.size() >= 2 and traits.size() <= 4, "特征数量应该在2-4之间") # 验证活动在有效列表中 var activity = personality["favorite_activity"] assert(activity in CharacterPersonalization.ACTIVITIES, "活动应该在有效列表中") print("✅ 个性生成测试通过") ## 测试成就系统 func test_achievement_system(): """测试成就系统""" print("\n--- 测试成就系统 ---") # 创建测试角色数据 var character_data = CharacterData.create("测试角色", "test_owner") # 测试首次登录成就 var achievements = CharacterPersonalization.check_achievements(character_data, "first_login") assert(achievements.size() == 1, "应该获得首次登录成就") assert(achievements[0]["id"] == "first_login", "成就ID应该正确") # 测试重复成就不会被添加 var duplicate_achievements = CharacterPersonalization.check_achievements(character_data, "first_login") assert(duplicate_achievements.size() == 0, "重复成就不应该被添加") # 测试等级成就 character_data[CharacterData.FIELD_LEVEL] = 5 var level_achievements = CharacterPersonalization.check_achievements(character_data, "level_up") assert(level_achievements.size() == 1, "应该获得等级5成就") assert(level_achievements[0]["id"] == "level_5", "成就ID应该是level_5") print("✅ 成就系统测试通过") ## 测试经验和升级系统 func test_experience_and_leveling(): """测试经验和升级系统""" print("\n--- 测试经验和升级系统 ---") # 创建测试角色数据 var character_data = CharacterData.create("测试角色", "test_owner") # 测试经验计算 var required_exp = CharacterData.get_required_experience(1) assert(required_exp == 150, "1级升2级应该需要150经验") var required_exp_2 = CharacterData.get_required_experience(2) assert(required_exp_2 == 250, "2级升3级应该需要250经验") # 测试升级 var leveled_up = CharacterData.add_experience(character_data, 150) assert(leveled_up, "应该升级") assert(character_data[CharacterData.FIELD_LEVEL] == 2, "等级应该是2") assert(character_data[CharacterData.FIELD_EXPERIENCE] == 0, "经验应该重置") # 测试部分经验 var not_leveled = CharacterData.add_experience(character_data, 100) assert(not not_leveled, "不应该升级") assert(character_data[CharacterData.FIELD_LEVEL] == 2, "等级应该保持2") assert(character_data[CharacterData.FIELD_EXPERIENCE] == 100, "经验应该是100") print("✅ 经验和升级系统测试通过") ## 测试状态和心情系统 func test_status_and_mood_system(): """测试状态和心情系统""" print("\n--- 测试状态和心情系统 ---") # 测试心情表情符号 assert(CharacterPersonalization.get_mood_emoji("happy") == "😊", "开心心情应该有正确表情") assert(CharacterPersonalization.get_mood_emoji("sad") == "😢", "难过心情应该有正确表情") # 测试状态颜色 assert(CharacterPersonalization.get_status_color("active") == Color.GREEN, "活跃状态应该是绿色") assert(CharacterPersonalization.get_status_color("busy") == Color.ORANGE, "忙碌状态应该是橙色") # 测试个性化描述生成 var character_data = CharacterData.create("测试角色", "test_owner") var description = CharacterPersonalization.generate_personality_description(character_data) assert(description.length() > 0, "应该生成个性化描述") assert("角色" in description, "描述应该包含'角色'") print("✅ 状态和心情系统测试通过") ## 断言函数 func assert(condition: bool, message: String): """简单的断言函数""" if not condition: push_error("断言失败: " + message) print("❌ " + message) else: print("✓ " + message)