创建新工程
This commit is contained in:
199
tests/test_character_personalization.gd
Normal file
199
tests/test_character_personalization.gd
Normal file
@@ -0,0 +1,199 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user