Files
cneicy 739fe328e7
Publish UPM package / publish (push) Failing after 1s
chore: initialize standalone UPM package
2026-08-26 02:50:03 +08:00

135 lines
3.7 KiB
C#

using System;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
using UnityEngine;
namespace ShrinkDataSaver.Tests
{
[TestFixture]
public class SaveTypesTests
{
// ── SaveMeta ──
[Test]
public void SaveMeta_LastModifiedTime_ConvertsCorrectly()
{
var meta = new SaveMeta
{
LastModified = 1700000000 // 2023-11-14 22:13:20 UTC
};
var dt = meta.LastModifiedTime;
Assert.AreEqual(2023, dt.Year);
Assert.AreEqual(11, dt.Month);
}
[Test]
public void SaveMeta_Defaults()
{
var meta = new SaveMeta();
Assert.AreEqual("New Save", meta.SlotName);
Assert.AreEqual(1, meta.SaveVersion);
Assert.IsFalse(meta.IsEncrypted);
Assert.IsNull(meta.ScreenshotBase64);
}
// ── ModuleConfig ──
[Test]
public void ModuleConfig_Defaults()
{
var cfg = new ModuleConfig();
Assert.IsTrue(cfg.EnableCloudSync);
Assert.AreEqual(0f, cfg.AutoSaveIntervalSeconds);
Assert.IsFalse(cfg.CriticalModule);
}
// ── SaveOptions ──
[Test]
public void SaveOptions_Defaults()
{
var opt = new SaveOptions();
Assert.AreEqual("New Save", opt.SlotName);
Assert.IsFalse(opt.CaptureScreenshot);
Assert.IsNull(opt.Screenshot);
Assert.IsFalse(opt.Encrypt);
Assert.IsNull(opt.EncryptionKey);
}
// ── LambdaSaveModule ──
[Test]
public void LambdaSaveModule_Serialize_CallsFactory()
{
var data = new TestData { Value = 42 };
var module = new LambdaSaveModule<TestData>("test", () => data, d => { });
Assert.AreEqual("test", module.Key);
var result = module.Serialize();
Assert.AreEqual(42, result.Value);
}
[Test]
public void LambdaSaveModule_Deserialize_CallsConsumer()
{
TestData received = null;
var module = new LambdaSaveModule<TestData>("test", () => null, d => received = d);
((ISaveModule)module).DeserializeRaw(JToken.FromObject(new TestData { Value = 99 }));
Assert.IsNotNull(received);
Assert.AreEqual(99, received.Value);
}
// ── 事件参数 ──
[Test]
public void SaveCompletedEventArgs_Fields()
{
var args = new SaveCompletedEventArgs
{
SlotIndex = 2,
ModuleNames = new[] { "inventory", "quests" },
Timestamp = 1234567890
};
Assert.AreEqual(2, args.SlotIndex);
Assert.AreEqual(2, args.ModuleNames.Length);
Assert.AreEqual(1234567890, args.Timestamp);
}
[Test]
public void LoadCompletedEventArgs_Fields()
{
var args = new LoadCompletedEventArgs
{
SlotIndex = 1,
ModuleNames = new[] { "player" },
Version = 3,
Timestamp = 9999
};
Assert.AreEqual(1, args.SlotIndex);
Assert.AreEqual(3, args.Version);
}
[Test]
public void MigrationCompletedEventArgs_Fields()
{
var args = new MigrationCompletedEventArgs
{
SlotIndex = 0, FromVersion = 1, ToVersion = 3
};
Assert.AreEqual(1, args.FromVersion);
Assert.AreEqual(3, args.ToVersion);
}
[Serializable]
public class TestData
{
public int Value;
}
}
}