public void WhenReadWithEmptySet_ThenReturnsEmptyCollection()
        {
            // Note: Example of using strings for XML

            // Arrange
            string inputXml = "<SuperPeople></SuperPeople>";

            SuperXmlSerializer target = new SuperXmlSerializer();

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput       = false;
            settings.IgnoreWhitespace = true;
            settings.IgnoreComments   = true;

            // Act
            IEnumerable <SuperPerson> actual;

            using (StringReader stringReader = new StringReader(inputXml))
            {
                using (XmlReader reader = XmlReader.Create(stringReader, settings))
                {
                    actual = target.Read(reader);
                }
            }

            // Assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(0, actual.Count());
        }
        public void WhenReadWithReaderNull_ThenThrows()
        {
            // Arrange

            SuperXmlSerializer target = new SuperXmlSerializer();

            XmlReader reader = null;

            // Act
            target.Read(reader);

            // Assert
        }
        public void WhenReadAndWrite_ThenRoundtripsXml()
        {
            // Arrange
            string inputXml = TestDataLoader.LoadText("TestData.SuperPeople.Valid.xml");
            string expected = inputXml;

            SuperXmlSerializer target = new SuperXmlSerializer();

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput       = false;
            settings.IgnoreWhitespace = true;
            settings.IgnoreComments   = true;

            XmlWriterSettings writerSettings = new XmlWriterSettings();

            writerSettings.CloseOutput        = false;
            writerSettings.Encoding           = System.Text.Encoding.UTF8;
            writerSettings.Indent             = false;
            writerSettings.OmitXmlDeclaration = false;

            // Act
            IEnumerable <SuperPerson> superPeople;

            using (StringReader stringReader = new StringReader(inputXml))
            {
                using (XmlReader reader = XmlReader.Create(stringReader, settings))
                {
                    superPeople = target.Read(reader);
                }
            }

            string actual;

            using (StringWriter stringWriter = new StringWriter())
            {
                using (XmlWriter writer = XmlWriter.Create(stringWriter, writerSettings))
                {
                    target.Write(writer, superPeople);
                    writer.Flush();
                    stringWriter.Flush();

                    actual = stringWriter.ToString();
                }
            }

            // Assert
            AssertXml.AreEqual(expected, actual);
        }
        public void WhenReadWithValidXml_ThenReturnsCollection()
        {
            // Note: Example of using embedded resource XML with TestDataLoader for input

            // Arrange
            string inputXml = TestDataLoader.LoadText("TestData.SuperPeople.Valid.xml");

            SuperXmlSerializer target = new SuperXmlSerializer();

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput       = false;
            settings.IgnoreWhitespace = true;
            settings.IgnoreComments   = true;

            // Act
            IEnumerable <SuperPerson> actual;

            using (StringReader stringReader = new StringReader(inputXml))
            {
                using (XmlReader reader = XmlReader.Create(stringReader, settings))
                {
                    actual = target.Read(reader);
                }
            }

            // Assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(5, actual.Count());

            int i = 1;

            foreach (var actualItem in actual)
            {
                Assert.AreEqual(i, actualItem.Id);
                Assert.AreEqual("Name" + i.ToString(), actualItem.Name);
                Assert.AreEqual("Allegiance" + i.ToString(), actualItem.Allegiance);
                Assert.AreEqual(i, actualItem.Rank);
                Assert.AreEqual(i, actualItem.Health);
                Assert.AreEqual(i, actualItem.Strength);
                Assert.AreEqual(i, actualItem.Speed);
                Assert.AreEqual(i, actualItem.Resistance);
                Assert.AreEqual(i, actualItem.Intellect);

                i++;
            }
        }
        public void WhenReadWithEmptyXml_ThenThrows()
        {
            // Arrange
            string inputXml = "";

            SuperXmlSerializer target = new SuperXmlSerializer();

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput       = false;
            settings.IgnoreWhitespace = true;
            settings.IgnoreComments   = true;

            // Act
            using (StringReader stringReader = new StringReader(inputXml))
            {
                using (XmlReader reader = XmlReader.Create(stringReader, settings))
                {
                    target.Read(reader);
                }
            }

            // Assert
        }