using NUnit.Framework; using SepCore.InputModule.Runtime; namespace SepCore.InputModule.Tests { public class BindingOverridePersistenceTests { [Test] public void SerializeV2_WrapsPayload() { string payload = "[{\"test\":true}]"; string result = BindingOverridePersistence.Serialize(payload); Assert.That(result, Does.Contain("\"version\":2")); bool success = BindingOverridePersistence.TryDeserialize(result, out string deserialized); Assert.That(success, Is.True); Assert.That(deserialized, Is.EqualTo(payload)); } [Test] public void TryDeserialize_V1RawJson_ReturnsTrueWithOriginalString() { string v1 = "[{\"action\":\"test\"}]"; bool success = BindingOverridePersistence.TryDeserialize(v1, out string overridesJson); Assert.That(success, Is.True); Assert.That(overridesJson, Is.EqualTo(v1)); } [Test] public void TryDeserialize_V2Wrapped_ReturnsTrueWithPayload() { string payload = "[{\"action\":\"test\"}]"; string v2 = BindingOverridePersistence.Serialize(payload); bool success = BindingOverridePersistence.TryDeserialize(v2, out string overridesJson); Assert.That(success, Is.True); Assert.That(overridesJson, Is.EqualTo(payload)); } [Test] public void TryDeserialize_CorruptedJson_ReturnsFalse() { bool success = BindingOverridePersistence.TryDeserialize("{not valid json", out _); Assert.That(success, Is.False); } [Test] public void TryDeserialize_FutureVersion_ReturnsFalse() { string future = "{\"version\":99,\"payload\":\"test\"}"; bool success = BindingOverridePersistence.TryDeserialize(future, out _); Assert.That(success, Is.False); } [Test] public void TryDeserialize_EmptyData_ReturnsFalse() { bool success = BindingOverridePersistence.TryDeserialize("", out _); Assert.That(success, Is.False); } [Test] public void TryDeserialize_NullData_ReturnsFalse() { bool success = BindingOverridePersistence.TryDeserialize(null, out _); Assert.That(success, Is.False); } [Test] public void TryDeserialize_Whitespace_ReturnsFalse() { bool success = BindingOverridePersistence.TryDeserialize(" ", out _); Assert.That(success, Is.False); } } }