Chessistics/chessistics-tests/Loading/CampaignFileTests.cs
Samuel Bouchet e3eb10570b Extend campaign_01 to 9 missions with a finale cathedral
Renames mission 7 from "Le Couronnement" to "Le Comptoir" (it only sets
up the tools→gold chain — the coronation is now the final mission) and
adds:

  - Mission 8 "L'Expansion Finale" (12×10): a Forge Est (wood→tools) and
    an Armurerie Est (stone→arms) on new rightmost columns, plus walls
    that force pieces to route around them. An Entrepôt Est demand on
    (11,9) gives the mission its own goal without depending on the old
    demands.
  - Mission 9 "Le Couronnement" (12×12): the Cathédrale occupies row 11
    as three adjacent demands — outils, armes, and or — so the player
    must keep all three transformation chains running simultaneously to
    complete the campaign.

Existing file tests updated for the new count and rename; new
Campaign01Tests asserts structure and non-regressive terrain across all
nine missions.
2026-04-17 22:34:11 +02:00

63 lines
2.2 KiB
C#

using Chessistics.Engine.Loading;
using Chessistics.Engine.Model;
using Xunit;
namespace Chessistics.Tests.Loading;
public class CampaignFileTests
{
[Fact]
public void Campaign01_LoadsSuccessfully()
{
var campaign = CampaignLoader.LoadFromFile("../../../../Data/campaigns/campaign_01.json");
Assert.Equal("La Quête du Roi", campaign.Name);
Assert.Equal(9, campaign.Missions.Count);
}
[Fact]
public void Campaign01_Mission5_HasTransformer()
{
var campaign = CampaignLoader.LoadFromFile("../../../../Data/campaigns/campaign_01.json");
var m5 = campaign.Missions[4]; // index 4
Assert.Equal("La Forge", m5.Name);
var transformerCell = m5.TerrainPatch.Cells
.FirstOrDefault(c => c.Type == CellType.Transformer);
Assert.NotNull(transformerCell);
Assert.Equal(CargoType.Wood, transformerCell.Transformer!.InputCargo);
Assert.Equal(CargoType.Tools, transformerCell.Transformer.OutputCargo);
}
[Fact]
public void Campaign01_Mission6_HasArmurerie()
{
var campaign = CampaignLoader.LoadFromFile("../../../../Data/campaigns/campaign_01.json");
var m6 = campaign.Missions[5];
Assert.Equal("L'Armurerie", m6.Name);
Assert.Equal(10, m6.TerrainPatch.NewWidth);
var transformerCell = m6.TerrainPatch.Cells
.FirstOrDefault(c => c.Type == CellType.Transformer);
Assert.NotNull(transformerCell);
Assert.Equal(CargoType.Stone, transformerCell.Transformer!.InputCargo);
Assert.Equal(CargoType.Arms, transformerCell.Transformer.OutputCargo);
}
[Fact]
public void Campaign01_Mission7_HasComptoir()
{
var campaign = CampaignLoader.LoadFromFile("../../../../Data/campaigns/campaign_01.json");
var m7 = campaign.Missions[6];
Assert.Equal("Le Comptoir", m7.Name);
var transformerCell = m7.TerrainPatch.Cells
.FirstOrDefault(c => c.Type == CellType.Transformer);
Assert.NotNull(transformerCell);
Assert.Equal(CargoType.Tools, transformerCell.Transformer!.InputCargo);
Assert.Equal(CargoType.Gold, transformerCell.Transformer.OutputCargo);
}
}