From b347c0bd1b2fcd28aa89ca2cf54e2cafac4708b2 Mon Sep 17 00:00:00 2001 From: Mike Norman Date: Fri, 14 Jul 2017 11:41:23 -0500 Subject: Fixed bug in comparereport command. Added unit tests. --- tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs | 67 ++++++++++++++-------- .../AVAssetImageGeneratorCompletionHandler.xml | 34 +++++++++++ .../AVAssetImageGeneratorCompletionHandler.xml | 34 +++++++++++ tools/DocStat/DocStat/EcmaXmlHelper.cs | 28 ++++++--- tools/DocStat/DocStat/comparereport.cs | 31 +++++----- 5 files changed, 146 insertions(+), 48 deletions(-) create mode 100644 tools/DocStat/DocStat.Tests/TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml create mode 100644 tools/DocStat/DocStat.Tests/TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml (limited to 'tools') diff --git a/tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs b/tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs index 5e27cd53..9acb2c73 100644 --- a/tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs +++ b/tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs @@ -10,40 +10,61 @@ using DocStat; namespace DocStat.Tests { - [TestFixture] - public class EcmaXmlHelperTests - { - [Test] - public void NewElementsYieldsAddedElements() - { - XDocument xmlNew = XDocument.Load("TestData/currentxml/t1.xml"); - XDocument xmlOld = XDocument.Load("TestData/oldxml/t1.xml"); + [TestFixture] + public class EcmaXmlHelperTests + { + [Test] + public void NewElementsYieldsAddedElements() + { + XDocument xmlNew = XDocument.Load("TestData/currentxml/t1.xml"); + XDocument xmlOld = XDocument.Load("TestData/oldxml/t1.xml"); - IEnumerable newMembers = EcmaXmlHelper.NewMembers(xmlNew, xmlOld); + IEnumerable newMembers = EcmaXmlHelper.NewMembers(xmlNew, xmlOld); - XElement e1 = - xmlNew.Element("Type").Element("Members").Elements() - .FirstOrDefault((XElement arg) => arg.Attribute("MemberName").Value == "WeakDelegate"); + XElement e1 = + xmlNew.Element("Type").Element("Members").Elements() + .FirstOrDefault((XElement arg) => arg.Attribute("MemberName").Value == "WeakDelegate"); XElement e2 = xmlNew.Element("Type").Element("Members").Elements() .FirstOrDefault((XElement arg) => arg.Attribute("MemberName").Value == "WeakDataSource"); - Assert.AreEqual(2, newMembers.Count()); - Assert.True(newMembers.Contains(e1)); - Assert.True(newMembers.Contains(e2)); - } + Assert.AreEqual(2, newMembers.Count()); + Assert.True(newMembers.Contains(e1)); + Assert.True(newMembers.Contains(e2)); + } + + [Test] + public void MembersReturnsMembers() + { + XDocument xmlOld = XDocument.Load("TestData/oldxml/t1.xml"); + IEnumerable members = EcmaXmlHelper.Members(xmlOld); + Assert.AreEqual(13, members.Count()); + + members = EcmaXmlHelper.Members(XDocument.Load("TestData/currentxml/t1.xml")); + + Assert.AreEqual(15, members.Count()); + } [Test] - public void MembersReturnsMembers() + public void MembersHandlesEmptyMembersList() { - XDocument xmlOld = XDocument.Load("TestData/oldxml/t1.xml"); - IEnumerable members = EcmaXmlHelper.Members(xmlOld); - Assert.AreEqual(13, members.Count()); + XDocument x = XDocument.Load("TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml"); + - members = EcmaXmlHelper.Members(XDocument.Load("TestData/currentxml/t1.xml")); + IEnumerable elements = EcmaXmlHelper.Members(x); + Assert.IsEmpty(elements); - Assert.AreEqual(15, members.Count()); } - } + + + [Test] + public void NewMembersHandlesEmptyMemberList() + { + XDocument o = XDocument.Load("TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml"); + XDocument n = XDocument.Load("TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml"); + + Assert.IsEmpty(EcmaXmlHelper.NewMembers(n, o)); + } + } } diff --git a/tools/DocStat/DocStat.Tests/TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml b/tools/DocStat/DocStat.Tests/TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml new file mode 100644 index 00000000..a743e8a2 --- /dev/null +++ b/tools/DocStat/DocStat.Tests/TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml @@ -0,0 +1,34 @@ + + + + + monotouch + 0.0.0.0 + + + Xamarin.iOS + 0.0.0.0 + + + System.Delegate + + + + + + + + + + System.Void + + + To be added. + To be added. + To be added. + To be added. + To be added. + A delegate that defines the handler for . + To be added. + + diff --git a/tools/DocStat/DocStat.Tests/TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml b/tools/DocStat/DocStat.Tests/TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml new file mode 100644 index 00000000..a743e8a2 --- /dev/null +++ b/tools/DocStat/DocStat.Tests/TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml @@ -0,0 +1,34 @@ + + + + + monotouch + 0.0.0.0 + + + Xamarin.iOS + 0.0.0.0 + + + System.Delegate + + + + + + + + + + System.Void + + + To be added. + To be added. + To be added. + To be added. + To be added. + A delegate that defines the handler for . + To be added. + + diff --git a/tools/DocStat/DocStat/EcmaXmlHelper.cs b/tools/DocStat/DocStat/EcmaXmlHelper.cs index 8176b0ad..a6cd6a3e 100644 --- a/tools/DocStat/DocStat/EcmaXmlHelper.cs +++ b/tools/DocStat/DocStat/EcmaXmlHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -186,24 +186,34 @@ namespace DocStat public static IEnumerable Members(XDocument ecmaXmlDoc) { - foreach (var m in ecmaXmlDoc.Element("Type").Element("Members").Elements()) - yield return m; + var members = ecmaXmlDoc.Element("Type").Element("Members"); + if (null != members) + { + foreach (var m in members.Elements("Member")) + yield return m; + } + yield break; } public static IEnumerable NewMembers(XDocument newXml, XDocument oldXml) { - if (null == oldXml) + + if (null == Members(newXml)) + { yield break; } + if (null == oldXml) { + foreach (var e in Members(newXml)) yield return e; } else { - foreach (var e in Members(newXml)) - { - if (null == GetSelectorFor(e)(oldXml)) - yield return e; - } + foreach (var e in Members(newXml)) + { + if (null == GetSelectorFor(e)(oldXml)) + yield return e; + } + } } } diff --git a/tools/DocStat/DocStat/comparereport.cs b/tools/DocStat/DocStat/comparereport.cs index 8cbcafc2..60cd06ea 100644 --- a/tools/DocStat/DocStat/comparereport.cs +++ b/tools/DocStat/DocStat/comparereport.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -51,16 +51,6 @@ namespace DocStat throw new ArgumentException(bareReportDir + " does not exist."); IEnumerable updated = CommandUtils.GetFileList(processlist, omitlist, updatedDir, pattern); - HashSet filesToUseAsReference = new HashSet(CommandUtils.GetFileList("", "", oldFilesDir, "")); - - updated = - updated.Where((f) => - filesToUseAsReference.Contains(EcmaXmlHelper.GetParallelFilePathFor(f, - oldFilesDir, - updatedDir))); - - - StreamWriter reportStream = new StreamWriter(reportFile); reportStream.WriteLine(@"""File Name"",""Type"",""Member"""); @@ -72,13 +62,20 @@ namespace DocStat Action WriteSubsequent = (XElement e) => { - reportStream.WriteLine(threeColumnFormatString, "", "", e.Attribute("name").Value); + reportStream.WriteLine(threeColumnFormatString, "", "", e.Attribute("MemberName").Value); }; - foreach (string updatedXMLFile in updated) { - XDocument updatedXDoc = XDocument.Load(updatedXMLFile); + XDocument updatedXDoc = XDocument.Load(updatedXMLFile); + + Action WriteFileLine = (string fname) => + { + reportStream.WriteLine(twoColumnFormatString, + fname, + updatedXDoc.Element("Type").Attribute("FullName").Value); + Write = WriteSubsequent; + }; Write = (XElement e) => { @@ -88,10 +85,12 @@ namespace DocStat WriteSubsequent(e); Write = WriteSubsequent; }; - + string oldXMLFile = EcmaXmlHelper.GetParallelFilePathFor(updatedXMLFile, oldFilesDir, updatedDir); XDocument oldXDoc = File.Exists(oldXMLFile) ? XDocument.Load(oldXMLFile) : null; - + if (null == oldXDoc) + WriteFileLine(updatedXMLFile); + foreach (XElement e in EcmaXmlHelper.NewMembers(updatedXDoc, oldXDoc)) { Write(e); -- cgit v1.2.3