public void CanParseEmpty()
        {
            TextReader historyReader = new StringReader("");
            DateTime oldestModification = DateTime.Parse("2006/11/22 11:10:44");
            DateTime newestModification = DateTime.Parse("2006/11/22 11:11:00");

            ExternalSourceControlHistoryParser parser = new ExternalSourceControlHistoryParser();
            Modification[] mods = parser.Parse(historyReader, oldestModification, newestModification);
            Assert.IsNotNull(mods, "mods should not be null");
            Assert.AreEqual(0, mods.Length);
        }
        public void CanParse()
        {
            DateTime oldestModification;
            DateTime newestModification;
            Modification[] expectedModifications = new Modification[2];
            string modificationXml =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<ArrayOfModification xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
    <Modification>
        <ChangeNumber>12245</ChangeNumber>
        <Comment>New Project for testing stuff</Comment>
        <EmailAddress>[email protected]</EmailAddress>
        <FileName>AssemblyInfo.cs</FileName>
        <FolderName>Dev\Server\Interface\Properties\</FolderName>
        <ModifiedTime>2006-11-22T11:11:00</ModifiedTime>
        <Type>add</Type>
        <UserName>joe_user</UserName>
        <Url>http://www.example.com/index.html</Url>
        <Version>5</Version>
    </Modification>
    <Modification>
        <ChangeNumber>12244</ChangeNumber>
        <Comment>New Project for accessing web services</Comment>
        <EmailAddress>[email protected]</EmailAddress>
        <FileName>Interface</FileName>
        <FolderName>Dev\Server\</FolderName>
        <ModifiedTime>2006-11-22T11:10:44</ModifiedTime>
        <Type>add</Type>
        <UserName>sam_spade</UserName>
        <Url>http://www.example.com/index.html</Url>
        <Version>4</Version>
    </Modification>
</ArrayOfModification>
";

            expectedModifications[0] = new Modification();
            expectedModifications[0].ChangeNumber = "12245";
            expectedModifications[0].Comment = "New Project for testing stuff";
            expectedModifications[0].EmailAddress = "*****@*****.**";
            expectedModifications[0].FileName = "AssemblyInfo.cs";
            expectedModifications[0].FolderName = @"Dev\Server\Interface\Properties\";
            expectedModifications[0].ModifiedTime = new DateTime(2006, 11, 22, 11, 11, 00);
            expectedModifications[0].Type = "add";
            expectedModifications[0].Url = "http://www.example.com/index.html";
            expectedModifications[0].UserName = "******";
            expectedModifications[0].Version = "5";

            expectedModifications[1] = new Modification();
            expectedModifications[1].ChangeNumber = "12244";
            expectedModifications[1].Comment = "New Project for accessing web services";
            expectedModifications[1].EmailAddress = "*****@*****.**";
            expectedModifications[1].FileName = "Interface";
            expectedModifications[1].FolderName = @"Dev\Server\";
            expectedModifications[1].ModifiedTime = new DateTime(2006, 11, 22, 11, 10, 44);
            expectedModifications[1].Type = "add";
            expectedModifications[1].Url = "http://www.example.com/index.html"; 
            expectedModifications[1].UserName = "******";
            expectedModifications[1].Version = "4";

            oldestModification = DateTime.Parse("2006/11/22 11:10:44");
            newestModification = DateTime.Parse("2006/11/22 11:11:00");

            TextReader historyReader = new StringReader(modificationXml);

            ExternalSourceControlHistoryParser parser = new ExternalSourceControlHistoryParser();
            Modification[] mods = parser.Parse(historyReader, oldestModification, newestModification);
            Assert.IsNotNull(mods, "mods should not be null");
            Assert.AreEqual(expectedModifications.Length, mods.Length);
            for (int i = 0; i < expectedModifications.Length; i++)
            {
                Assert.AreEqual(expectedModifications[i].ChangeNumber, mods[i].ChangeNumber);
                Assert.AreEqual(expectedModifications[i].Comment, mods[i].Comment);
                Assert.AreEqual(expectedModifications[i].EmailAddress, mods[i].EmailAddress);
                Assert.AreEqual(expectedModifications[i].FileName, mods[i].FileName);
                Assert.AreEqual(expectedModifications[i].FolderName, mods[i].FolderName);
                Assert.AreEqual(expectedModifications[i].ModifiedTime, mods[i].ModifiedTime);
                Assert.AreEqual(expectedModifications[i].Type, mods[i].Type);
                Assert.AreEqual(expectedModifications[i].Url, mods[i].Url);
                Assert.AreEqual(expectedModifications[i].UserName, mods[i].UserName);
                Assert.AreEqual(expectedModifications[i].Version, mods[i].Version);
            }
        }