99 lines
4.4 KiB
C#
99 lines
4.4 KiB
C#
using AibisDream.SaveSystem;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NUnit.Framework;
|
|
|
|
namespace AibisDream.SystemEditor.Tests
|
|
{
|
|
public sealed class PresentationSnapshotContractTests
|
|
{
|
|
[Test]
|
|
public void PresentationProviders_UseStableIdsAndRestoreInDependencyOrder()
|
|
{
|
|
var showcase = new ShowcaseSnapshotProvider();
|
|
var day2Sleep = new Day2SleepPresentationSnapshotProvider();
|
|
var playTool = new PlayToolSnapshotProvider();
|
|
var screen = new ScreenSnapshotProvider();
|
|
|
|
Assert.That(showcase.SaveId, Is.EqualTo("showcase"));
|
|
Assert.That(day2Sleep.SaveId, Is.EqualTo("day2SleepPresentation"));
|
|
Assert.That(playTool.SaveId, Is.EqualTo("playTool"));
|
|
Assert.That(showcase.RestoreOrder, Is.LessThan(day2Sleep.RestoreOrder));
|
|
Assert.That(day2Sleep.RestoreOrder, Is.LessThan(playTool.RestoreOrder));
|
|
Assert.That(playTool.RestoreOrder, Is.LessThan(screen.RestoreOrder));
|
|
}
|
|
|
|
[Test]
|
|
public void PlayToolSection_RoundTripsThroughSnapshotJson()
|
|
{
|
|
var source = new SaveSnapshot();
|
|
source.sections[SnapshotProviderIds.PlayTool] = new PlayToolSnapshotDto
|
|
{
|
|
isObjVisible = true,
|
|
objPicName = "证物",
|
|
isFullScreenVisible = true,
|
|
fullScreenPicName = "教室"
|
|
};
|
|
|
|
var json = JsonConvert.SerializeObject(source);
|
|
var restored = JsonConvert.DeserializeObject<SaveSnapshot>(json);
|
|
var playTool = ((JObject)restored.sections[SnapshotProviderIds.PlayTool])
|
|
.ToObject<PlayToolSnapshotDto>();
|
|
|
|
Assert.That(playTool.isObjVisible, Is.True);
|
|
Assert.That(playTool.objPicName, Is.EqualTo("证物"));
|
|
Assert.That(playTool.isFullScreenVisible, Is.True);
|
|
Assert.That(playTool.fullScreenPicName, Is.EqualTo("教室"));
|
|
Assert.That(restored.schemaVersion, Is.EqualTo(SaveSnapshotSchema.CurrentVersion));
|
|
}
|
|
|
|
[Test]
|
|
public void ShowcaseAndDay2SleepSections_RoundTripSemanticState()
|
|
{
|
|
var source = new SaveSnapshot();
|
|
source.sections[SnapshotProviderIds.Showcase] = new ShowcaseSnapshotDto
|
|
{
|
|
displayMode = ShowcaseDisplayMode.Large.ToString(),
|
|
picName = "D2S星图",
|
|
isBackgroundVisible = true
|
|
};
|
|
source.sections[SnapshotProviderIds.Day2SleepPresentation] =
|
|
new Day2SleepPresentationSnapshotDto
|
|
{
|
|
mode = Day2SleepPresentationMode.LargeEffects.ToString(),
|
|
largeBlurAmount = 0.72f,
|
|
largeBlurSize = 0.015f,
|
|
largeScaleMultiplier = 1.1f,
|
|
largeAlpha = 0.4f
|
|
};
|
|
|
|
var json = JsonConvert.SerializeObject(source);
|
|
var restored = JsonConvert.DeserializeObject<SaveSnapshot>(json);
|
|
var showcase = ((JObject)restored.sections[SnapshotProviderIds.Showcase])
|
|
.ToObject<ShowcaseSnapshotDto>();
|
|
var day2Sleep = ((JObject)restored.sections[SnapshotProviderIds.Day2SleepPresentation])
|
|
.ToObject<Day2SleepPresentationSnapshotDto>();
|
|
|
|
Assert.That(showcase.displayMode, Is.EqualTo("Large"));
|
|
Assert.That(showcase.picName, Is.EqualTo("D2S星图"));
|
|
Assert.That(showcase.isBackgroundVisible, Is.True);
|
|
Assert.That(day2Sleep.mode, Is.EqualTo("LargeEffects"));
|
|
Assert.That(day2Sleep.largeBlurAmount, Is.EqualTo(0.72f));
|
|
Assert.That(day2Sleep.largeScaleMultiplier, Is.EqualTo(1.1f));
|
|
Assert.That(day2Sleep.largeAlpha, Is.EqualTo(0.4f));
|
|
}
|
|
|
|
[Test]
|
|
public void OldSnapshotWithoutPresentationSections_DeserializesWithoutSynthesizingSections()
|
|
{
|
|
var restored = JsonConvert.DeserializeObject<SaveSnapshot>(
|
|
"{\"schemaVersion\":1,\"sections\":{}}");
|
|
|
|
Assert.That(restored.schemaVersion, Is.EqualTo(1));
|
|
Assert.That(restored.sections.ContainsKey(SnapshotProviderIds.Showcase), Is.False);
|
|
Assert.That(restored.sections.ContainsKey(SnapshotProviderIds.Day2SleepPresentation), Is.False);
|
|
Assert.That(restored.sections.ContainsKey(SnapshotProviderIds.PlayTool), Is.False);
|
|
}
|
|
}
|
|
}
|