diff --git a/tests/Tgstation.Server.Host.Tests/Extensions/Converters/TestVersionConverter.cs b/tests/Tgstation.Server.Host.Tests/Extensions/Converters/TestVersionConverter.cs new file mode 100644 index 0000000000..a650c0e97f --- /dev/null +++ b/tests/Tgstation.Server.Host.Tests/Extensions/Converters/TestVersionConverter.cs @@ -0,0 +1,52 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using Tgstation.Server.Api; +using YamlDotNet.Serialization; + +namespace Tgstation.Server.Host.Extensions.Converters.Tests +{ + [TestClass] + public sealed class TestVersionConverter + { + class TestObject + { + public Version Version { get; set; } + } + + readonly Version testVersion; + readonly string testYaml; + + public TestVersionConverter() + { + testVersion = new Version(1, 2, 3); + testYaml = $@"{nameof(TestObject.Version)}: {testVersion.Semver()}"; + } + + [TestMethod] + public void TestYamlSerialization() + { + var testObj = new TestObject + { + Version = testVersion + }; + + var serializedString = new SerializerBuilder() + .WithTypeConverter(new VersionConverter()) + .Build() + .Serialize(testObj); + + Assert.AreEqual(testYaml, serializedString.Trim()); + } + + [TestMethod] + public void TestYamlDeserialization() + { + var deserialized = new DeserializerBuilder() + .WithTypeConverter(new VersionConverter()) + .Build() + .Deserialize(testYaml); + + Assert.AreEqual(testVersion, deserialized.Version); + } + } +}