This isn't actually how you write nulls in YamlDotNet

This commit is contained in:
Jordan Brown
2021-02-08 02:39:16 -05:00
parent 84a906f674
commit b10c609663
2 changed files with 6 additions and 26 deletions
@@ -8,7 +8,7 @@ using YamlDotNet.Serialization;
namespace Tgstation.Server.Host.Extensions.Converters
{
/// <summary>
/// <see cref="JsonConverter"/> and <see cref="IYamlTypeConverter"/> for serializing <see cref="global::System.Version"/>s for BYOND.
/// <see cref="JsonConverter"/> and <see cref="IYamlTypeConverter"/> for serializing <see cref="global::System.Version"/>s in semver format.
/// </summary>
sealed class VersionConverter : JsonConverter, IYamlTypeConverter
{
@@ -82,19 +82,7 @@ namespace Tgstation.Server.Host.Extensions.Converters
public bool Accepts(Type type) => CheckSupportsType(type, false);
/// <inheritdoc />
public object ReadYaml(IParser parser, Type type)
{
if (parser == null)
throw new ArgumentNullException(nameof(parser));
CheckSupportsType(type, true);
var scalar = parser.Consume<Scalar>();
if (scalar == null)
return null;
return global::System.Version.Parse(scalar.Value);
}
public object ReadYaml(IParser parser, Type type) => throw new NotSupportedException("Deserialization not supported!"); // The default implementation is fine at handling this
/// <inheritdoc />
public void WriteYaml(IEmitter emitter, object value, Type type)
@@ -104,11 +92,14 @@ namespace Tgstation.Server.Host.Extensions.Converters
CheckSupportsType(type, true);
if (value == null)
throw new NotSupportedException("Null values not supported!");
var version = (global::System.Version)value;
emitter.Emit(
new Scalar(
version
?.Semver()
.Semver()
.ToString()));
}
}
@@ -37,16 +37,5 @@ namespace Tgstation.Server.Host.Extensions.Converters.Tests
Assert.AreEqual(testYaml, serializedString.Trim());
}
[TestMethod]
public void TestYamlDeserialization()
{
var deserialized = new DeserializerBuilder()
.WithTypeConverter(new VersionConverter())
.Build()
.Deserialize<TestObject>(testYaml);
Assert.AreEqual(testVersion, deserialized.Version);
}
}
}