summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization')
-rw-r--r--Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/ColorJsonConverterTests.cs66
-rw-r--r--Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/RectangleFJsonConverterTest.cs36
2 files changed, 102 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/ColorJsonConverterTests.cs b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/ColorJsonConverterTests.cs
new file mode 100644
index 0000000..ae8e1e7
--- /dev/null
+++ b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/ColorJsonConverterTests.cs
@@ -0,0 +1,66 @@
+using System;
+using System.IO;
+using System.Text;
+using System.Text.Json;
+using Microsoft.Xna.Framework;
+using MonoGame.Extended.Serialization;
+
+namespace MonoGame.Extended.Tests.Serialization;
+
+public sealed class ColorJsonConverterTests
+{
+ private readonly ColorJsonConverter _converter = new ColorJsonConverter();
+
+ [Fact]
+ public void CanConvert_ColorType_ReturnsTrue()
+ {
+ var colorType = typeof(Color);
+ var result = _converter.CanConvert(colorType);
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void CanConvert_NonColorType_ReturnsFalse()
+ {
+ var otherType = typeof(string);
+ var result = _converter.CanConvert(otherType);
+ Assert.False(result);
+ }
+
+ [Theory]
+ [InlineData("Red", 255, 0, 0, 255)]
+ [InlineData("#FF0000FF", 255, 0, 0, 255)]
+ public void Read_ValidColorJson_ReturnsExpectedColor(string jsonValue, byte r, byte g, byte b, byte a)
+ {
+ var json = $"\"{jsonValue}\"";
+ var reader = new Utf8JsonReader(Encoding.UTF8.GetBytes(json));
+
+ reader.Read();
+ var actual = _converter.Read(ref reader, typeof(Color), new JsonSerializerOptions());
+
+ var expected = new Color(r, g, b, a);
+ Assert.Equal(expected, actual);
+ }
+
+ [Fact]
+ public void Write_ValidColor_WritesExpectedJson()
+ {
+ var expected = "#ff000000";
+ var color = ColorHelper.FromHex(expected);
+ using var stream = new MemoryStream();
+ using var writer = new Utf8JsonWriter(stream);
+
+ _converter.Write(writer, color, new JsonSerializerOptions());
+ writer.Flush();
+ var actual = Encoding.UTF8.GetString(stream.ToArray());
+
+ Assert.Equal($"\"{expected}\"", actual);
+ }
+
+ [Fact]
+ public void Write_NullWrier_ThrowArgumentNullException()
+ {
+ var color = Color.MonoGameOrange;
+ Assert.Throws<ArgumentNullException>(() => _converter.Write(null, color, new JsonSerializerOptions()));
+ }
+}
diff --git a/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/RectangleFJsonConverterTest.cs b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/RectangleFJsonConverterTest.cs
new file mode 100644
index 0000000..96f9c4f
--- /dev/null
+++ b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Serialization/RectangleFJsonConverterTest.cs
@@ -0,0 +1,36 @@
+using System.IO;
+using System.Text.Json;
+using MonoGame.Extended.Serialization;
+using Xunit;
+
+namespace MonoGame.Extended.Tests.Serialization;
+
+public class RectangleFJsonConverterTest
+{
+
+ public class TestContent
+ {
+ public RectangleF Box { get; set; }
+ }
+
+ [Fact]
+ public void ConstructorTest()
+ {
+ var jsonData = @"
+{
+ ""box"": ""1 1 10 10""
+}
+";
+ var options = new JsonSerializerOptions
+ {
+ PropertyNameCaseInsensitive = true
+ };
+ options.Converters.Add(new RectangleFJsonConverter());
+ var content = JsonSerializer.Deserialize<TestContent>(jsonData, options);
+
+ Assert.Equal(1, content.Box.Left);
+ Assert.Equal(1, content.Box.Top);
+ Assert.Equal(10, content.Box.Width);
+ Assert.Equal(10, content.Box.Height);
+ }
+}