| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- // Copyright (c) Craftwork Games. All rights reserved.
- // Licensed under the MIT license.
- // See LICENSE file in the project root for full license information.
- using System.IO;
- using System.Xml;
- using Microsoft.Xna.Framework;
- using MonoGame.Extended.Serialization.Xml;
- namespace MonoGame.Extended.Tests.Serialization.Xml;
- public class XmlReaderExtensionsTests
- {
- private static XmlReader CreateXmlReader(string xml)
- {
- StringReader stringReader = new StringReader(xml);
- XmlReader xmlReader = XmlReader.Create(stringReader);
- xmlReader.MoveToContent();
- return xmlReader;
- }
- [Fact]
- public void GetAttributeInt_ValidValue_ReturnsCorrectInt()
- {
- int expected = 42;
- string xml = $"<element testAttr=\"{expected}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- int actual = reader.GetAttributeInt("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeInt_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeInt_InvalidFormat_ThrowsXmlException()
- {
- string xml = "<element testAttr=\"not-a-number\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeFloat_ValidValue_ReturnsCorrectFloat()
- {
- float expected = 3.14f;
- string xml = $"<element testAttr=\"{expected}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- float actual = reader.GetAttributeFloat("testAttr");
- Assert.Equal(expected, actual, precision: 5);
- }
- [Fact]
- public void GetAttributeFloat_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeFloat_InvalidFormat_ThrowsXmlException()
- {
- string xml = "<element testAttr=\"not-a-float\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Theory]
- [InlineData("true", true)]
- [InlineData("false", false)]
- [InlineData("True", true)]
- [InlineData("False", false)]
- public void GetAttributeBool_ValidValues_ReturnsCorrectBool(string value, bool expected)
- {
- string xml = $"<element testAttr=\"{value}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- bool actual = reader.GetAttributeBool("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeBool_InvalidFormat_ThrowsXmlException()
- {
- string xml = "<element testAttr=\"maybe\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Theory]
- [InlineData(nameof(PlayerIndex.One), PlayerIndex.One)]
- [InlineData(nameof(PlayerIndex.Two), PlayerIndex.Two)]
- [InlineData(nameof(PlayerIndex.Three), PlayerIndex.Three)]
- [InlineData(nameof(PlayerIndex.Four), PlayerIndex.Four)]
- public void GetAttributeEnum_ValidValues_ReturnsCorrectEnum(string value, PlayerIndex expected)
- {
- string xml = $"<element testAttr=\"{value}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- PlayerIndex actual = reader.GetAttributeEnum<PlayerIndex>("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeEnum_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeEnum_InvalidValue_ThrowsXmlException()
- {
- string xml = "<element testAttr=\"InvalidEnumValue\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeRectangle_ValidValue_ReturnsCorrectRectangle()
- {
- Rectangle expected = new Rectangle(1, 2, 3, 4);
- string xml = $"<element testAttr=\"{expected.X},{expected.Y},{expected.Width},{expected.Height}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Rectangle actual = reader.GetAttributeRectangle("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeRectangle_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Theory]
- [InlineData("1,2,3")]
- [InlineData("1,2,3,4,5")]
- [InlineData("a,b,c,d")]
- [InlineData("1.5,2,3,4")]
- public void GetAttributeRectangle_InvalidFormat_ThrowsXmlException(string value)
- {
- string xml = $"<element testAttr=\"{value}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeVector2_ValidValue_ReturnsCorrectVector2()
- {
- Vector2 expected = new Vector2(1.0f, 2.0f);
- string xml = $"<element testAttr=\"{expected.X},{expected.Y}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Vector2 actual = reader.GetAttributeVector2("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeVector2_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Theory]
- [InlineData("3.14")]
- [InlineData("1,2,3")]
- [InlineData("a,b")]
- public void GetAttributeVector2_InvalidFormat_ThrowsXmlException(string value)
- {
- string xml = $"<element testAttr=\"{value}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Fact]
- public void GetAttributeVector3_ValidValue_ReturnsCorrectVector3()
- {
- Vector3 expected = new Vector3(1.0f, 2.0f, 3.0f);
- string xml = $"<element testAttr=\"{expected.X},{expected.Y},{expected.Z}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Vector3 actual = reader.GetAttributeVector3("testAttr");
- Assert.Equal(expected, actual);
- }
- [Fact]
- public void GetAttributeVector3_MissingAttribute_ThrowsXmlException()
- {
- string xml = "<element />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- [Theory]
- [InlineData("1.0,2.0")]
- [InlineData("1,2,3,4")]
- [InlineData("a,b,c")]
- public void GetAttributeVector3_InvalidFormat_ThrowsXmlException(string value)
- {
- string xml = $"<element testAttr=\"{value}\" />";
- using XmlReader reader = CreateXmlReader(xml);
- Assert.Throws<XmlException>(() => reader.GetAttributeInt("testAttr"));
- }
- }
|