126 lines
3.9 KiB
JavaScript
126 lines
3.9 KiB
JavaScript
// Test runner. Instantiates every suite, calls its `test_*` methods and prints
|
|
// a summary, exiting non-zero when anything fails. Run with:
|
|
//
|
|
// node tests/run_tests.js
|
|
|
|
import { HexTest } from "./hex_test.js";
|
|
import { NoiseTest } from "./noise_test.js";
|
|
import { RngTest } from "./rng_test.js";
|
|
import { DataTest } from "./data_test.js";
|
|
import { MapGeneratorTest } from "./map_generator_test.js";
|
|
import { HexPathfinderTest } from "./hex_pathfinder_test.js";
|
|
import { TerrainStatsTest } from "./terrain_stats_test.js";
|
|
import { RoadsTest } from "./roads_test.js";
|
|
import { EconomyTest } from "./economy_test.js";
|
|
import { TextFormatTest } from "./text_format_test.js";
|
|
import { GameClockTest } from "./game_clock_test.js";
|
|
import { LoginManagerTest } from "./login_manager_test.js";
|
|
import { RulesTest } from "./rules_test.js";
|
|
import { CombatTest } from "./combat_test.js";
|
|
import { StackingTest, PillageTest } from "./stacking_test.js";
|
|
import { SiegeTest } from "./siege_test.js";
|
|
import { AttackOrderTest, ScheduledOrderTest } from "./orders_test.js";
|
|
import { GameStateTest } from "./game_state_test.js";
|
|
import { GameStateBuildingsTest } from "./game_state_buildings_test.js";
|
|
import { GameStateGovernmentTest } from "./game_state_government_test.js";
|
|
import { GameStateTechnologyTest } from "./game_state_technology_test.js";
|
|
import { DiplomacyStateTest, DiplomacyServerTest } from "./diplomacy_test.js";
|
|
import { ConflictsStateTest, ConflictsModalTest } from "./conflicts_test.js";
|
|
import { GameServerTest, GameServerOrdersTest, GameServerLoginTest, GameServerLobbyTest } from "./game_server_test.js";
|
|
import { ServerStaticTest, ServerLoopTest, ServerProtocolTest } from "./server_test.js";
|
|
import { WebSocketProtocolTest } from "./websocket_test.js";
|
|
import { NetTest } from "./net_test.js";
|
|
import { MapViewTest } from "./map_view_test.js";
|
|
import { CityModalTest, NationModalTest, ConfirmModalTest, NewsModalTest } from "./modals_test.js";
|
|
import { GameScreenTest } from "./game_screen_test.js";
|
|
import { GameFeedTest } from "./feed_test.js";
|
|
import { AppTest } from "./app_test.js";
|
|
import {
|
|
OrderStateRegressionTest,
|
|
EconomyOrderEdgesTest,
|
|
AttritionTest,
|
|
CasualtyRecordingTest,
|
|
CatalogueSplitTest,
|
|
TextFormatRegressionTest,
|
|
} from "./regression_test.js";
|
|
|
|
const SUITES = [
|
|
HexTest,
|
|
NoiseTest,
|
|
RngTest,
|
|
DataTest,
|
|
MapGeneratorTest,
|
|
HexPathfinderTest,
|
|
TerrainStatsTest,
|
|
RoadsTest,
|
|
EconomyTest,
|
|
TextFormatTest,
|
|
GameClockTest,
|
|
LoginManagerTest,
|
|
RulesTest,
|
|
CombatTest,
|
|
StackingTest,
|
|
PillageTest,
|
|
SiegeTest,
|
|
AttackOrderTest,
|
|
ScheduledOrderTest,
|
|
GameStateTest,
|
|
GameStateBuildingsTest,
|
|
GameStateGovernmentTest,
|
|
GameStateTechnologyTest,
|
|
DiplomacyStateTest,
|
|
DiplomacyServerTest,
|
|
ConflictsStateTest,
|
|
ConflictsModalTest,
|
|
GameServerTest,
|
|
GameServerOrdersTest,
|
|
GameServerLoginTest,
|
|
GameServerLobbyTest,
|
|
ServerStaticTest,
|
|
ServerLoopTest,
|
|
ServerProtocolTest,
|
|
WebSocketProtocolTest,
|
|
NetTest,
|
|
MapViewTest,
|
|
CityModalTest,
|
|
NationModalTest,
|
|
ConfirmModalTest,
|
|
NewsModalTest,
|
|
GameScreenTest,
|
|
GameFeedTest,
|
|
AppTest,
|
|
OrderStateRegressionTest,
|
|
EconomyOrderEdgesTest,
|
|
AttritionTest,
|
|
CasualtyRecordingTest,
|
|
CatalogueSplitTest,
|
|
TextFormatRegressionTest,
|
|
];
|
|
|
|
let passed = 0;
|
|
const failures = [];
|
|
|
|
for (const Suite of SUITES) {
|
|
const instance = new Suite();
|
|
const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance))
|
|
.filter((name) => name.startsWith("test_") && name !== "constructor")
|
|
.sort();
|
|
for (const method of methods) {
|
|
try {
|
|
await instance[method]();
|
|
passed += 1;
|
|
} catch (error) {
|
|
failures.push(`${Suite.name}::${method}: ${error.message}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log("");
|
|
if (failures.length === 0) {
|
|
console.log(`PASS: ${passed} test(s) passed.`);
|
|
process.exit(0);
|
|
}
|
|
console.log(`FAIL: ${passed} passed, ${failures.length} failed.`);
|
|
for (const failure of failures) console.log(` - ${failure}`);
|
|
process.exit(1);
|