Files
Battle-for-Tismo/tests/terrain_stats_test.js

35 lines
1.7 KiB
JavaScript

import { TestCase } from "./framework/test_case.js";
import { TerrainStats, DEFAULT_MOVEMENT_COST_MULTIPLIER } from "../shared/terrain_stats.js";
export class TerrainStatsTest extends TestCase {
test_authored_values_are_read() {
const stats = new TerrainStats({
"0,0": { populationMultiplier: 0.3, productionMultiplier: 0.5, movementCostMultiplier: 1.5 },
});
this.assertApprox(stats.populationMultiplier({ x: 0, y: 0 }), 0.3);
this.assertApprox(stats.productionMultiplier({ x: 0, y: 0 }), 0.5);
this.assertApprox(stats.movementCostMultiplier({ x: 0, y: 0 }), 1.5);
}
test_unset_missing_and_zero_movement_fall_back() {
const stats = new TerrainStats({ "0,0": {}, "1,0": { movementCostMultiplier: 0 } });
this.assertApprox(stats.populationMultiplier({ x: 0, y: 0 }), 0.0);
this.assertApprox(stats.productionMultiplier({ x: 0, y: 0 }), 0.0);
this.assertApprox(stats.movementCostMultiplier({ x: 0, y: 0 }), DEFAULT_MOVEMENT_COST_MULTIPLIER);
this.assertApprox(stats.movementCostMultiplier({ x: 1, y: 0 }), DEFAULT_MOVEMENT_COST_MULTIPLIER);
// A tile off the map gets the same defaults as an unset one.
this.assertApprox(stats.populationMultiplier({ x: 9, y: 9 }), 0.0);
this.assertApprox(stats.movementCostMultiplier({ x: 9, y: 9 }), DEFAULT_MOVEMENT_COST_MULTIPLIER);
}
test_min_movement_cost_picks_cheapest_used_tile() {
const stats = new TerrainStats({
"0,0": { movementCostMultiplier: 2.0 },
"1,0": { movementCostMultiplier: 0.5 },
"2,0": {},
});
this.assertApprox(stats.minMovementCostMultiplier(), 0.5);
this.assertApprox(new TerrainStats({}).minMovementCostMultiplier(), DEFAULT_MOVEMENT_COST_MULTIPLIER);
}
}