232 lines
7.5 KiB
TypeScript
232 lines
7.5 KiB
TypeScript
/*
|
|
* 强化系统测试脚本
|
|
* 用于验证强化系统是否正常工作
|
|
*/
|
|
|
|
import {
|
|
getRandomEnhancementOptions,
|
|
getLevelAdjustedEnhancementOptions,
|
|
getEnhancementOptionByType,
|
|
EnhancementType,
|
|
EnhancementOptions,
|
|
EnhancementQualityWeight
|
|
} from "./LevelUpEnhancement"
|
|
import { Quality } from "./CardSet"
|
|
|
|
// 测试函数
|
|
export function testEnhancementSystem(): void {
|
|
console.log("=== 强化系统测试开始 ===");
|
|
|
|
// 测试1: 基础随机生成
|
|
testBasicRandomGeneration();
|
|
|
|
// 测试2: 等级调整功能
|
|
testLevelAdjustment();
|
|
|
|
// 测试3: 特定选项获取
|
|
testSpecificOptionRetrieval();
|
|
|
|
// 测试4: 品质权重验证
|
|
testQualityWeights();
|
|
|
|
// 测试5: 配置完整性
|
|
testConfigurationIntegrity();
|
|
|
|
console.log("=== 强化系统测试完成 ===");
|
|
}
|
|
|
|
// 测试基础随机生成
|
|
function testBasicRandomGeneration(): void {
|
|
console.log("\n--- 测试基础随机生成 ---");
|
|
|
|
try {
|
|
const options = getRandomEnhancementOptions(3);
|
|
console.log(`✓ 成功生成 ${options.length} 个强化选项`);
|
|
|
|
options.forEach((option, index) => {
|
|
console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`);
|
|
});
|
|
|
|
// 验证选项完整性
|
|
options.forEach(option => {
|
|
if (!option.name || !option.description || !option.buffType || !option.value) {
|
|
throw new Error(`选项数据不完整: ${JSON.stringify(option)}`);
|
|
}
|
|
});
|
|
|
|
console.log("✓ 所有选项数据完整");
|
|
|
|
} catch (error) {
|
|
console.error("✗ 基础随机生成测试失败:", error);
|
|
}
|
|
}
|
|
|
|
// 测试等级调整功能
|
|
function testLevelAdjustment(): void {
|
|
console.log("\n--- 测试等级调整功能 ---");
|
|
|
|
try {
|
|
const testLevels = [1, 10, 20, 30];
|
|
|
|
testLevels.forEach(level => {
|
|
const options = getLevelAdjustedEnhancementOptions(level, 3);
|
|
console.log(`✓ 等级 ${level} 生成 ${options.length} 个选项`);
|
|
|
|
// 验证高等级是否有更多稀有品质
|
|
const rareCount = options.filter(option =>
|
|
option.rarity === "rare" ||
|
|
option.rarity === "epic" ||
|
|
option.rarity === "legendary"
|
|
).length;
|
|
|
|
console.log(` 稀有品质数量: ${rareCount}`);
|
|
});
|
|
|
|
console.log("✓ 等级调整功能正常");
|
|
|
|
} catch (error) {
|
|
console.error("✗ 等级调整功能测试失败:", error);
|
|
}
|
|
}
|
|
|
|
// 测试特定选项获取
|
|
function testSpecificOptionRetrieval(): void {
|
|
console.log("\n--- 测试特定选项获取 ---");
|
|
|
|
try {
|
|
// 测试攻击力强化
|
|
const attackWhite = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.WHITE);
|
|
const attackBlue = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.BLUE);
|
|
|
|
if (attackWhite && attackBlue) {
|
|
console.log(`✓ 攻击力强化选项获取成功`);
|
|
console.log(` 白色: ${attackWhite.name} - ${attackWhite.description}`);
|
|
console.log(` 蓝色: ${attackBlue.name} - ${attackBlue.description}`);
|
|
} else {
|
|
throw new Error("无法获取攻击力强化选项");
|
|
}
|
|
|
|
// 测试生命值强化
|
|
const healthPurple = getEnhancementOptionByType(EnhancementType.HEALTH, Quality.PURPLE);
|
|
if (healthPurple) {
|
|
console.log(`✓ 生命值强化选项获取成功: ${healthPurple.name}`);
|
|
}
|
|
|
|
// 测试攻击速度强化
|
|
const speedOrange = getEnhancementOptionByType(EnhancementType.ATTACK_SPEED, Quality.ORANGE);
|
|
if (speedOrange) {
|
|
console.log(`✓ 攻击速度强化选项获取成功: ${speedOrange.name}`);
|
|
}
|
|
|
|
console.log("✓ 特定选项获取功能正常");
|
|
|
|
} catch (error) {
|
|
console.error("✗ 特定选项获取测试失败:", error);
|
|
}
|
|
}
|
|
|
|
// 测试品质权重验证
|
|
function testQualityWeights(): void {
|
|
console.log("\n--- 测试品质权重验证 ---");
|
|
|
|
try {
|
|
const totalWeight = Object.values(EnhancementQualityWeight).reduce((sum, weight) => sum + weight, 0);
|
|
|
|
if (Math.abs(totalWeight - 1.0) < 0.001) {
|
|
console.log(`✓ 品质权重总和为 1.0 (实际: ${totalWeight.toFixed(3)})`);
|
|
} else {
|
|
throw new Error(`品质权重总和不为 1.0: ${totalWeight}`);
|
|
}
|
|
|
|
// 验证权重分布
|
|
console.log("品质权重分布:");
|
|
Object.entries(EnhancementQualityWeight).forEach(([quality, weight]) => {
|
|
const qualityName = getQualityName(parseInt(quality));
|
|
console.log(` ${qualityName}: ${(weight * 100).toFixed(1)}%`);
|
|
});
|
|
|
|
console.log("✓ 品质权重验证通过");
|
|
|
|
} catch (error) {
|
|
console.error("✗ 品质权重验证失败:", error);
|
|
}
|
|
}
|
|
|
|
// 测试配置完整性
|
|
function testConfigurationIntegrity(): void {
|
|
console.log("\n--- 测试配置完整性 ---");
|
|
|
|
try {
|
|
const enhancementTypes = Object.values(EnhancementType);
|
|
const qualities = [Quality.WHITE, Quality.GREEN, Quality.BLUE, Quality.PURPLE, Quality.ORANGE];
|
|
|
|
let totalOptions = 0;
|
|
let missingOptions = 0;
|
|
|
|
enhancementTypes.forEach(type => {
|
|
qualities.forEach(quality => {
|
|
totalOptions++;
|
|
const option = EnhancementOptions[type]?.[quality];
|
|
if (!option) {
|
|
missingOptions++;
|
|
console.log(` 缺失: 类型${type} 品质${quality}`);
|
|
}
|
|
});
|
|
});
|
|
|
|
console.log(`✓ 总选项数: ${totalOptions}`);
|
|
console.log(`✓ 缺失选项数: ${missingOptions}`);
|
|
console.log(`✓ 完整度: ${((totalOptions - missingOptions) / totalOptions * 100).toFixed(1)}%`);
|
|
|
|
if (missingOptions === 0) {
|
|
console.log("✓ 配置完整性验证通过");
|
|
} else {
|
|
console.log("⚠ 存在缺失配置,但不影响基本功能");
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error("✗ 配置完整性测试失败:", error);
|
|
}
|
|
}
|
|
|
|
// 辅助函数:获取品质名称
|
|
function getQualityName(quality: number): string {
|
|
switch (quality) {
|
|
case Quality.WHITE: return "白色";
|
|
case Quality.GREEN: return "绿色";
|
|
case Quality.BLUE: return "蓝色";
|
|
case Quality.PURPLE: return "紫色";
|
|
case Quality.ORANGE: return "橙色";
|
|
default: return "未知";
|
|
}
|
|
}
|
|
|
|
// 性能测试
|
|
export function testPerformance(): void {
|
|
console.log("\n=== 性能测试开始 ===");
|
|
|
|
const iterations = 1000;
|
|
const startTime = Date.now();
|
|
|
|
for (let i = 0; i < iterations; i++) {
|
|
getRandomEnhancementOptions(3);
|
|
}
|
|
|
|
const endTime = Date.now();
|
|
const duration = endTime - startTime;
|
|
|
|
console.log(`生成 ${iterations} 次强化选项耗时: ${duration}ms`);
|
|
console.log(`平均每次耗时: ${(duration / iterations).toFixed(2)}ms`);
|
|
|
|
if (duration < 1000) {
|
|
console.log("✓ 性能测试通过");
|
|
} else {
|
|
console.log("⚠ 性能较慢,建议优化");
|
|
}
|
|
}
|
|
|
|
// 导出测试函数
|
|
export function runAllTests(): void {
|
|
testEnhancementSystem();
|
|
testPerformance();
|
|
}
|