|
|
@@ -8,7 +8,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
|
|
/**
|
|
|
* 房屋产出加成测试
|
|
|
- *
|
|
|
+ *
|
|
|
* 验证房屋等级产出加成的数据一致性和计算正确性
|
|
|
*/
|
|
|
class HouseOutputBonusTest extends TestCase
|
|
|
@@ -20,29 +20,29 @@ class HouseOutputBonusTest extends TestCase
|
|
|
*/
|
|
|
public function testHouseConfigDataConsistency()
|
|
|
{
|
|
|
- // 期望的房屋等级产出加成配置
|
|
|
+ // 期望的房屋等级产出加成配置(百分比值)
|
|
|
$expectedConfigs = [
|
|
|
- 1 => 0.00, // 0%
|
|
|
- 2 => 0.05, // 5%
|
|
|
- 3 => 0.10, // 10%
|
|
|
- 4 => 0.15, // 15%
|
|
|
- 5 => 0.20, // 20%
|
|
|
- 6 => 0.25, // 25%
|
|
|
- 7 => 0.30, // 30%
|
|
|
- 8 => 0.35, // 35%
|
|
|
- 9 => 0.40, // 40%
|
|
|
- 10 => 0.45, // 45%
|
|
|
- 11 => 0.50, // 50%
|
|
|
- 12 => 0.60, // 60%
|
|
|
+ 1 => 0, // 0%
|
|
|
+ 2 => 5, // 5%
|
|
|
+ 3 => 10, // 10%
|
|
|
+ 4 => 15, // 15%
|
|
|
+ 5 => 20, // 20%
|
|
|
+ 6 => 25, // 25%
|
|
|
+ 7 => 30, // 30%
|
|
|
+ 8 => 35, // 35%
|
|
|
+ 9 => 40, // 40%
|
|
|
+ 10 => 45, // 45%
|
|
|
+ 11 => 50, // 50%
|
|
|
+ 12 => 60, // 60%
|
|
|
];
|
|
|
|
|
|
foreach ($expectedConfigs as $level => $expectedBonus) {
|
|
|
$config = FarmHouseConfig::where('level', $level)->first();
|
|
|
-
|
|
|
+
|
|
|
$this->assertNotNull($config, "房屋等级 {$level} 的配置不存在");
|
|
|
$this->assertEquals(
|
|
|
- $expectedBonus,
|
|
|
- (float)$config->output_bonus,
|
|
|
+ $expectedBonus,
|
|
|
+ (float)$config->output_bonus,
|
|
|
"房屋等级 {$level} 的产出加成应该是 {$expectedBonus},实际是 {$config->output_bonus}"
|
|
|
);
|
|
|
}
|
|
|
@@ -72,11 +72,11 @@ class HouseOutputBonusTest extends TestCase
|
|
|
|
|
|
foreach ($testCases as $level => $expectedOutput) {
|
|
|
$config = FarmHouseConfig::where('level', $level)->first();
|
|
|
- $actualOutput = (int)($baseOutput * (1 + $config->output_bonus));
|
|
|
-
|
|
|
+ $actualOutput = (int)($baseOutput * (1 + ($config->output_bonus / 100))); // 将百分比值转换为小数
|
|
|
+
|
|
|
$this->assertEquals(
|
|
|
- $expectedOutput,
|
|
|
- $actualOutput,
|
|
|
+ $expectedOutput,
|
|
|
+ $actualOutput,
|
|
|
"房屋等级 {$level},基础产量 {$baseOutput},期望最终产量 {$expectedOutput},实际计算结果 {$actualOutput}"
|
|
|
);
|
|
|
}
|
|
|
@@ -104,11 +104,11 @@ class HouseOutputBonusTest extends TestCase
|
|
|
|
|
|
foreach ($testCases as $level => $expectedPercentage) {
|
|
|
$config = FarmHouseConfig::where('level', $level)->first();
|
|
|
- $actualPercentage = round($config->output_bonus * 100) . '%';
|
|
|
-
|
|
|
+ $actualPercentage = round($config->output_bonus) . '%'; // 直接使用百分比值
|
|
|
+
|
|
|
$this->assertEquals(
|
|
|
- $expectedPercentage,
|
|
|
- $actualPercentage,
|
|
|
+ $expectedPercentage,
|
|
|
+ $actualPercentage,
|
|
|
"房屋等级 {$level} 的百分比显示应该是 {$expectedPercentage},实际是 {$actualPercentage}"
|
|
|
);
|
|
|
}
|
|
|
@@ -125,14 +125,14 @@ class HouseOutputBonusTest extends TestCase
|
|
|
$disasterPenalty = 0.10; // 灾害10%减产
|
|
|
|
|
|
$config = FarmHouseConfig::where('level', $houseLevel)->first();
|
|
|
- $houseBonus = $config->output_bonus;
|
|
|
+ $houseBonus = $config->output_bonus / 100; // 将百分比值转换为小数
|
|
|
|
|
|
// 计算最终产量:基础产量 × (1 + 土地加成) × (1 + 房屋加成) × (1 - 灾害减产)
|
|
|
$expectedOutput = (int)($baseOutput * (1 + $landBonus) * (1 + $houseBonus) * (1 - $disasterPenalty));
|
|
|
-
|
|
|
+
|
|
|
// 手动计算验证:1000 * 1.25 * 1.30 * 0.90 = 1462.5 -> 1462
|
|
|
$manualCalculation = (int)(1000 * 1.25 * 1.30 * 0.90);
|
|
|
-
|
|
|
+
|
|
|
$this->assertEquals(1462, $manualCalculation, "手动计算结果应该是1462");
|
|
|
$this->assertEquals($manualCalculation, $expectedOutput, "复合加成计算结果不正确");
|
|
|
}
|