fix bug where splitter filters were not taken over to blueprint
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include "Blueprint.h"
|
||||
#include "BlueprintSerializer.h"
|
||||
#include "BuildingType.h"
|
||||
#include "ItemType.h"
|
||||
#include "Rotation.h"
|
||||
#include "ShipLayout.h"
|
||||
|
||||
@@ -263,3 +264,42 @@ TEST_CASE("BlueprintSerializer: shipyard with empty modules list round-trips", "
|
||||
REQUIRE(loaded[0].buildings[0].shipLayout.has_value());
|
||||
REQUIRE(loaded[0].buildings[0].shipLayout->placedModules.empty());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Splitter output filters round-trip through TOML serialization
|
||||
// (REQ-UI-BLUEPRINT-STORAGE).
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_CASE("BlueprintSerializer: splitter output filters round-trip", "[serializer]")
|
||||
{
|
||||
BlueprintBuilding splitter =
|
||||
makeBuilding(BuildingType::Splitter, Rotation::East, QPoint(0, 0));
|
||||
splitter.splitterFilterA = { ItemType{"iron_ore"}, ItemType{"copper_ore"} };
|
||||
splitter.splitterFilterB = { ItemType{"scrap"} };
|
||||
|
||||
const Blueprint original = makeBlueprintWith({ splitter }, "Sorter");
|
||||
const std::string toml = BlueprintSerializer::serialize({ original });
|
||||
const std::vector<Blueprint> loaded = BlueprintSerializer::deserialize(toml);
|
||||
|
||||
REQUIRE(loaded.size() == 1);
|
||||
REQUIRE(loaded[0].buildings.size() == 1);
|
||||
|
||||
const BlueprintBuilding& b = loaded[0].buildings[0];
|
||||
REQUIRE(b.splitterFilterA
|
||||
== std::vector<ItemType>{ ItemType{"iron_ore"}, ItemType{"copper_ore"} });
|
||||
REQUIRE(b.splitterFilterB == std::vector<ItemType>{ ItemType{"scrap"} });
|
||||
}
|
||||
|
||||
TEST_CASE("BlueprintSerializer: splitter with no filters round-trips empty", "[serializer]")
|
||||
{
|
||||
const Blueprint original = makeBlueprintWith(
|
||||
{ makeBuilding(BuildingType::Splitter, Rotation::East, QPoint(0, 0)) }, "Open");
|
||||
|
||||
const std::string toml = BlueprintSerializer::serialize({ original });
|
||||
const std::vector<Blueprint> loaded = BlueprintSerializer::deserialize(toml);
|
||||
|
||||
REQUIRE(loaded.size() == 1);
|
||||
REQUIRE(loaded[0].buildings.size() == 1);
|
||||
REQUIRE(loaded[0].buildings[0].splitterFilterA.empty());
|
||||
REQUIRE(loaded[0].buildings[0].splitterFilterB.empty());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user