Report abuse

using DynamicXMLReader;
using NUnit.Framework;

namespace DynamicXMLReaderTests
{
  [TestFixture]
  public class DynamicXmlReaderTests
  {
    [Test]
    public void CanReadOneLevelAttributeAsProperty()
    {
      const string someXml = "<name first=\"Aaron\" />";
      dynamic dynamicReader = DynamicXmlReader.Parse(someXml);
      Assert.AreEqual("Aaron", dynamicReader.Name.First);
    }

    [Test]
    public void CanReadTwoLevelElementAsProperty()
    {
      const string someXml 
        = "<name first=\"Aaron\" last=\"Erickson\"><age>37</age><book>The Nomadic Developer</book><book>Professional F#></book></name>";
      dynamic dynamicReader = DynamicXmlReader.Parse(someXml);
      Assert.AreEqual(37, int.Parse(dynamicReader.Name.Age));
    }

    [Test]
    public void CanReadTheSecondBook()
    {
      const string someXml 
        = "<name first=\"Aaron\" last=\"Erickson\"><age>37</age><book>The Nomadic Developer</book><book>Professional F#</book></name>";
      dynamic dynamicReader = DynamicXmlReader.Parse(someXml);
      Assert.AreEqual("Professional F#", dynamicReader.Name.Book[1]);
    }

    [Test]
    public void CanReadTheFirstBooksSubTitleTitle()
    {
      const string someXml 
        = "<name first=\"Aaron\" last=\"Erickson\"><age>37</age><book><title>The Nomadic Developer</title><subtitle>Surviving in consulting</subtitle></book><book>Professional F#</book></name>";
      dynamic dynamicReader = DynamicXmlReader.Parse(someXml);
      Assert.AreEqual("Surviving in consulting", dynamicReader.Name.Book[0].Subtitle);
    }
  }
}