Run Re-Do
This commit is contained in:
@@ -167,8 +167,8 @@ namespace ProjectM.Tests
|
||||
{
|
||||
var data = new SaveData { GoalCharge = 1, GoalTarget = 4, RunOutcome = RunOutcomeId.Victory };
|
||||
var back = JsonUtility.FromJson<SaveData>(JsonUtility.ToJson(data));
|
||||
Assert.AreEqual(SaveData.CurrentVersion, back.Version, "END-2: new saves write v5.");
|
||||
Assert.AreEqual(5, SaveData.CurrentVersion, "SaveData is at v5 (END-2 added RunOutcome).");
|
||||
Assert.AreEqual(SaveData.CurrentVersion, back.Version, "new saves write the current version.");
|
||||
Assert.AreEqual(6, SaveData.CurrentVersion, "SaveData is at v6 (permanent meta: tier rows + run counters).");
|
||||
Assert.AreEqual((int)RunOutcomeId.Victory, back.RunOutcome, "the latched terminal outcome round-trips through JSON.");
|
||||
}
|
||||
|
||||
@@ -183,6 +183,41 @@ namespace ProjectM.Tests
|
||||
Assert.LessOrEqual(back.Version, SaveData.CurrentVersion);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Pre_v6_Save_Missing_Meta_Defaults_To_Empty()
|
||||
{
|
||||
// A v5 save JSON lacks MetaUpgrades/RunsCompleted/MaxDepthReached -> the field initializer keeps the
|
||||
// array EMPTY (never null) and the counters 0-default. Additive: no field, no break; v5 loads.
|
||||
var back = JsonUtility.FromJson<SaveData>("{\"Version\":5,\"GoalCharge\":3,\"GoalTarget\":4}");
|
||||
Assert.IsNotNull(back.MetaUpgrades, "missing MetaUpgrades -> empty array, never null.");
|
||||
Assert.AreEqual(0, back.MetaUpgrades.Length);
|
||||
Assert.AreEqual(0, back.RunsCompleted, "missing RunsCompleted -> 0 (StagePendingSave floors it to GoalCharge).");
|
||||
Assert.AreEqual(0, back.MaxDepthReached);
|
||||
Assert.GreaterOrEqual(back.Version, SaveData.MinLoadableVersion, "v5 stays within the additive load floor.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MetaUpgrades_And_Counters_RoundTrip()
|
||||
{
|
||||
var data = new SaveData
|
||||
{
|
||||
RunsCompleted = 7,
|
||||
MaxDepthReached = 9,
|
||||
MetaUpgrades = new[]
|
||||
{
|
||||
new MetaUpgradeSave { ClassId = 2, UpgradeId = 1, Tier = 3 },
|
||||
new MetaUpgradeSave { ClassId = 3, UpgradeId = 200, Tier = 1 }, // unknown id persists verbatim
|
||||
},
|
||||
};
|
||||
var back = JsonUtility.FromJson<SaveData>(JsonUtility.ToJson(data));
|
||||
Assert.AreEqual(7, back.RunsCompleted);
|
||||
Assert.AreEqual(9, back.MaxDepthReached);
|
||||
Assert.AreEqual(2, back.MetaUpgrades.Length, "meta tier rows round-trip through JSON.");
|
||||
Assert.AreEqual(2, back.MetaUpgrades[0].ClassId);
|
||||
Assert.AreEqual(1, back.MetaUpgrades[0].UpgradeId);
|
||||
Assert.AreEqual(3, back.MetaUpgrades[0].Tier);
|
||||
Assert.AreEqual(200, back.MetaUpgrades[1].UpgradeId, "an unknown upgrade id is preserved on disk, not clamped at save time (preserve-don't-crash).");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user