Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMike Norman <mike.norman@xamarin.com>2017-07-14 19:41:23 +0300
committerJoel Martinez <joelmartinez@gmail.com>2017-07-17 18:18:06 +0300
commitb347c0bd1b2fcd28aa89ca2cf54e2cafac4708b2 (patch)
tree6077153a67f3c59a3c548f3fca19768226f48db6 /tools
parentd938cee866a7e94c02ce71fd3352e67f24b8da59 (diff)
Fixed bug in comparereport command. Added unit tests.
Diffstat (limited to 'tools')
-rw-r--r--tools/DocStat/DocStat.Tests/EcmaXmlHelperTests.cs67
-rw-r--r--tools/DocStat/DocStat.Tests/TestData/currentxml/AVAssetImageGeneratorCompletionHandler.xml34
-rw-r--r--tools/DocStat/DocStat.Tests/TestData/oldxml/AVAssetImageGeneratorCompletionHandler.xml34
-rw-r--r--tools/DocStat/DocStat/EcmaXmlHelper.cs28
-rw-r--r--tools/DocStat/DocStat/comparereport.cs31
5 files changed, 146 insertions, 48 deletions
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<XElement> newMembers = EcmaXmlHelper.NewMembers(xmlNew, xmlOld);
+ IEnumerable<XElement> 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<XElement> 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<XElement> 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<XElement> 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 @@
+<Type Name="AVAssetImageGeneratorCompletionHandler" FullName="MonoTouch.AVFoundation.AVAssetImageGeneratorCompletionHandler">
+ <TypeSignature Language="C#" Value="public delegate void AVAssetImageGeneratorCompletionHandler(CMTime requestedTime, IntPtr imageRef, CMTime actualTime, AVAssetImageGeneratorResult result, NSError error);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AVAssetImageGeneratorCompletionHandler extends System.MulticastDelegate" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>monotouch</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>Xamarin.iOS</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="requestedTime" Type="MonoTouch.CoreMedia.CMTime" />
+ <Parameter Name="imageRef" Type="System.IntPtr" />
+ <Parameter Name="actualTime" Type="MonoTouch.CoreMedia.CMTime" />
+ <Parameter Name="result" Type="MonoTouch.AVFoundation.AVAssetImageGeneratorResult" />
+ <Parameter Name="error" Type="MonoTouch.Foundation.NSError" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="requestedTime">To be added.</param>
+ <param name="imageRef">To be added.</param>
+ <param name="actualTime">To be added.</param>
+ <param name="result">To be added.</param>
+ <param name="error">To be added.</param>
+ <summary>A delegate that defines the handler for <see cref="M:MonoTouch.AVFoundation.AVAssetImageGenerator.GenerateCGImagesAsynchronously" />.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
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 @@
+<Type Name="AVAssetImageGeneratorCompletionHandler" FullName="MonoTouch.AVFoundation.AVAssetImageGeneratorCompletionHandler">
+ <TypeSignature Language="C#" Value="public delegate void AVAssetImageGeneratorCompletionHandler(CMTime requestedTime, IntPtr imageRef, CMTime actualTime, AVAssetImageGeneratorResult result, NSError error);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AVAssetImageGeneratorCompletionHandler extends System.MulticastDelegate" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>monotouch</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>Xamarin.iOS</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="requestedTime" Type="MonoTouch.CoreMedia.CMTime" />
+ <Parameter Name="imageRef" Type="System.IntPtr" />
+ <Parameter Name="actualTime" Type="MonoTouch.CoreMedia.CMTime" />
+ <Parameter Name="result" Type="MonoTouch.AVFoundation.AVAssetImageGeneratorResult" />
+ <Parameter Name="error" Type="MonoTouch.Foundation.NSError" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="requestedTime">To be added.</param>
+ <param name="imageRef">To be added.</param>
+ <param name="actualTime">To be added.</param>
+ <param name="result">To be added.</param>
+ <param name="error">To be added.</param>
+ <summary>A delegate that defines the handler for <see cref="M:MonoTouch.AVFoundation.AVAssetImageGenerator.GenerateCGImagesAsynchronously" />.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
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<XElement> 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<XElement> 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<string> updated = CommandUtils.GetFileList(processlist, omitlist, updatedDir, pattern);
- HashSet<string> filesToUseAsReference = new HashSet<string>(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<XElement> 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<string> 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);