mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-01 09:37:03 +02:00
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests. Tests are now split into separate projects as appropriate, and the API side has also been split off.
105 lines
4.0 KiB
C#
105 lines
4.0 KiB
C#
using System.Collections.Generic;
|
|
using NUnit.Framework;
|
|
using Robust.Shared.Serialization;
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
|
using Robust.Shared.Serialization.Manager.Exceptions;
|
|
using Robust.Shared.Serialization.Markdown;
|
|
using Robust.Shared.Serialization.Markdown.Mapping;
|
|
using Robust.Shared.Serialization.Markdown.Value;
|
|
|
|
namespace Robust.UnitTesting.Shared.Serialization.SerializationTests;
|
|
|
|
internal sealed partial class ReadValueProviderTests : OurSerializationTest
|
|
{
|
|
//test for: datadefinition (value, mapping), selfserialize
|
|
|
|
#region TypeDefinitions
|
|
|
|
private sealed class SelfSerializeValueProviderTestDummy : ISelfSerialize, IBaseInterface
|
|
{
|
|
public string Data = string.Empty;
|
|
|
|
public void Deserialize(string value)
|
|
{
|
|
Data = value;
|
|
}
|
|
|
|
public string Serialize()
|
|
{
|
|
return Data;
|
|
}
|
|
}
|
|
|
|
[DataDefinition]
|
|
internal sealed partial class DataDefinitionValueProviderTestDummy : IBaseInterface
|
|
{
|
|
[DataField("data")] public string Data = string.Empty;
|
|
}
|
|
|
|
internal sealed class OtherDataDefinitionValueProviderTestDummy : IBaseInterface{}
|
|
|
|
private interface IBaseInterface {}
|
|
|
|
#endregion
|
|
|
|
[Test]
|
|
public void SelfSerializeTest()
|
|
{
|
|
var data = "someData";
|
|
var instance = new SelfSerializeValueProviderTestDummy();
|
|
var result = Serialization.Read(new ValueDataNode(data), instanceProvider: () => instance, notNullableOverride: true);
|
|
Assert.That(result, Is.SameAs(instance));
|
|
Assert.That(result.Data, Is.EqualTo(instance.Data));
|
|
}
|
|
|
|
[Test]
|
|
public void SelfSerializeBaseTest()
|
|
{
|
|
var data = "someData";
|
|
var instance = new SelfSerializeValueProviderTestDummy();
|
|
var result = Serialization.Read<IBaseInterface>(new ValueDataNode(data){Tag = $"!type:{nameof(SelfSerializeValueProviderTestDummy)}"}, instanceProvider: () => instance, notNullableOverride: true);
|
|
Assert.That(result, Is.SameAs(instance));
|
|
Assert.That(((SelfSerializeValueProviderTestDummy)result).Data, Is.EqualTo(instance.Data));
|
|
}
|
|
|
|
[Test]
|
|
public void DataDefinitionMappingTest()
|
|
{
|
|
var data = "someData";
|
|
var mapping = new MappingDataNode { { "data", data } };
|
|
var instance = new DataDefinitionValueProviderTestDummy();
|
|
var result = Serialization.Read(mapping, instanceProvider: () => instance, notNullableOverride: true);
|
|
Assert.That(result, Is.SameAs(instance));
|
|
Assert.That(result.Data, Is.EqualTo(instance.Data));
|
|
}
|
|
|
|
[Test]
|
|
public void DataDefinitionMappingBaseTest()
|
|
{
|
|
var data = "someData";
|
|
var mapping = new MappingDataNode(new Dictionary<string, DataNode>{{ "data", new ValueDataNode(data) }})
|
|
{
|
|
Tag = $"!type:{nameof(DataDefinitionValueProviderTestDummy)}"
|
|
};
|
|
var instance = new DataDefinitionValueProviderTestDummy();
|
|
var result = Serialization.Read<IBaseInterface>(mapping, instanceProvider: () => instance, notNullableOverride: true);
|
|
Assert.That(result, Is.SameAs(instance));
|
|
Assert.That(((DataDefinitionValueProviderTestDummy)result).Data, Is.EqualTo(instance.Data));
|
|
}
|
|
|
|
[Test]
|
|
public void DataDefinitionValueBaseTest()
|
|
{
|
|
var instance = new DataDefinitionValueProviderTestDummy();
|
|
var result = Serialization.Read<IBaseInterface>(new ValueDataNode{Tag = $"!type:{nameof(DataDefinitionValueProviderTestDummy)}"}, instanceProvider: () => instance, notNullableOverride: true);
|
|
Assert.That(result, Is.SameAs(instance));
|
|
}
|
|
|
|
[Test]
|
|
public void DataDefinitionValueBaseInvalidTest()
|
|
{
|
|
var instance = new OtherDataDefinitionValueProviderTestDummy();
|
|
Assert.That(() => Serialization.Read<IBaseInterface>(new ValueDataNode{Tag = $"!type:{nameof(DataDefinitionValueProviderTestDummy)}"}, instanceProvider: () => instance, notNullableOverride: true),Throws.InstanceOf<InvalidInstanceReturnedException>());
|
|
}
|
|
}
|