implement ship modules
This commit is contained in:
57
src/test/ModuleConfigTest.cpp
Normal file
57
src/test/ModuleConfigTest.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include "ConfigLoader.h"
|
||||
#include "ModulesConfig.h"
|
||||
|
||||
static GameConfig loadConfig()
|
||||
{
|
||||
return ConfigLoader::loadFromDirectory(CONFIG_DIR);
|
||||
}
|
||||
|
||||
TEST_CASE("ConfigLoader: loadModules parses modules.toml", "[config][modules]")
|
||||
{
|
||||
const GameConfig cfg = loadConfig();
|
||||
REQUIRE(cfg.modules.modules.size() >= 2);
|
||||
|
||||
const ModuleDef& armor = cfg.modules.modules[0];
|
||||
CHECK(armor.id == "armor_plate");
|
||||
CHECK(armor.surfaceMask.size() == 1);
|
||||
CHECK(armor.surfaceMask[0] == "OO");
|
||||
CHECK(armor.materials.size() == 1);
|
||||
CHECK(armor.materials[0].item == "iron_ingot");
|
||||
CHECK(armor.materials[0].amount == 2);
|
||||
CHECK(armor.playerProductionLevel == 1);
|
||||
CHECK(armor.productionTimeSeconds == Approx(3.0));
|
||||
CHECK(armor.threatCost == Approx(2.0));
|
||||
CHECK(armor.fillColor == "#808080");
|
||||
CHECK(armor.glyph == "A");
|
||||
REQUIRE(armor.statModifiers.size() == 1);
|
||||
CHECK(armor.statModifiers[0].stat == "hp");
|
||||
CHECK(armor.statModifiers[0].modifierType == "multiplicative");
|
||||
CHECK(armor.statModifiers[0].formula.evaluate(1.0) == Approx(1.5));
|
||||
}
|
||||
|
||||
TEST_CASE("ConfigLoader: loadModules parses additive modifiers", "[config][modules]")
|
||||
{
|
||||
const GameConfig cfg = loadConfig();
|
||||
REQUIRE(cfg.modules.modules.size() >= 2);
|
||||
|
||||
const ModuleDef& sensor = cfg.modules.modules[1];
|
||||
CHECK(sensor.id == "sensor_booster");
|
||||
REQUIRE(sensor.statModifiers.size() == 1);
|
||||
CHECK(sensor.statModifiers[0].stat == "sensor_range");
|
||||
CHECK(sensor.statModifiers[0].modifierType == "additive");
|
||||
CHECK(sensor.statModifiers[0].formula.evaluate(1.0) == Approx(10.0));
|
||||
}
|
||||
|
||||
TEST_CASE("ConfigLoader: loadShips parses layout field", "[config][ships]")
|
||||
{
|
||||
const GameConfig cfg = loadConfig();
|
||||
REQUIRE(!cfg.ships.ships.empty());
|
||||
|
||||
const ShipDef& ship = cfg.ships.ships[0];
|
||||
REQUIRE(!ship.layout.empty());
|
||||
CHECK(ship.layout[0] == "XOX");
|
||||
CHECK(ship.layout[1] == "OOO");
|
||||
CHECK(ship.layout[2] == "XOX");
|
||||
}
|
||||
Reference in New Issue
Block a user