Files
RobustToolbox/Robust.UnitTesting/Shared/Serialization/YamlConstantSerializer_Test.cs
T
DrSmugleafandGitHub e0c63e7ce6 Add SerializedType attribute to specify the id used in !type tags (#1545)
* Add SerializedType attribute to serialize types without the !type tag

* Fix nulls in tests

* Fix null in tests maybe

* Return to type tags

* Fix imports
2021-02-11 13:50:55 -08:00

71 lines
2.3 KiB
C#

using NUnit.Framework;
using Robust.Shared.Serialization;
using Robust.UnitTesting.Shared.Serialization.YamlObjectSerializerTests;
using YamlDotNet.RepresentationModel;
namespace Robust.UnitTesting.Shared.Serialization
{
[TestFixture]
[TestOf(typeof(YamlConstantSerializer))]
class YamlConstantSerializer_Test : RobustUnitTest
{
public sealed class GenericConstantTag {}
[Test]
public void SerializeOneConstantTest()
{
// Arrange
var data = (int)GenericConstants.One;
var mapping = new YamlMappingNode();
var serializer = YamlObjectSerializer.NewWriter(mapping);
// Act
serializer.DataField(ref data, "generic_constants", 0, WithFormat.Constants<GenericConstantTag>());
// Assert
var result = YamlObjectSerializer_Test.NodeToYamlText(mapping);
Assert.That(result, Is.EqualTo(SerializedOneConstant));
}
[Test]
public void DeserializeOneConstantTest()
{
// Arrange
var data = 0;
var rootNode = YamlObjectSerializer_Test.YamlTextToNode(SerializedOneConstant);
var serializer = YamlObjectSerializer.NewReader(rootNode);
// Act
serializer.DataField(ref data, "generic_constants", 0, WithFormat.Constants<GenericConstantTag>());
// Assert
Assert.That(data, Is.EqualTo((int)GenericConstants.One));
}
[Test]
public void DeserializeLegacyFormatTest()
{
// Arrange
var data = 0;
var rootNode = YamlObjectSerializer_Test.YamlTextToNode(SerializedThree);
var serializer = YamlObjectSerializer.NewReader(rootNode);
// Act
serializer.DataField(ref data, "generic_constants", 0, WithFormat.Constants<GenericConstantTag>());
// Assert
Assert.That(data, Is.EqualTo((int)GenericConstants.Three));
}
private const string SerializedOneConstant = "generic_constants: One\n...\n";
private const string SerializedThree = "generic_constants: 3\n...\n";
[ConstantsFor(typeof(GenericConstantTag))]
private enum GenericConstants
{
One = 1,
Three = 3,
}
}
}