using System.Linq;
using mdoc.Test.SampleClasses;
using Mono.Documentation.Updater;
using Mono.Documentation.Updater.Frameworks;
using NUnit.Framework;
using System.Xml;
namespace mdoc.Test
{
[TestFixture]
public class DocUtilsTests : BasicTests
{
[Test]
public void IsIgnored_MethodGeneratedByProperty_IsIgnoredTrue()
{
var method = GetMethod(typeof(SomeClass), "get_" + nameof(SomeClass.Property));
var isIgnoredPropertyGeneratedMethod = DocUtils.IsIgnored(method);
Assert.True(isIgnoredPropertyGeneratedMethod);
}
[Test]
public void IsIgnored_GetMethodIsNotGeneratedByProperty_IsIgnoredFalse()
{
var method = GetMethod(typeof(SomeClass), nameof(SomeClass.get_Method));
var isIgnoredPropertyGeneratedMethod = DocUtils.IsIgnored(method);
Assert.False(isIgnoredPropertyGeneratedMethod);
}
[Test]
public void IsIgnored_GetMethodInIterfaceIsGeneratedByProperty_IsIgnoredTrue()
{
var method = GetMethod(typeof(SomeInterface), "get_B");
var isIgnoredPropertyGeneratedMethod = DocUtils.IsIgnored(method);
Assert.IsTrue(isIgnoredPropertyGeneratedMethod);
}
[Test]
public void IsIgnored_SetMethodIsGeneratedByProperty_IsIgnoredTrue()
{
var method = GetMethod(typeof(SomeClass), "set_" +nameof(SomeClass.Property4));
var isIgnoredPropertyGeneratedMethod = DocUtils.IsIgnored(method);
Assert.IsTrue(isIgnoredPropertyGeneratedMethod);
}
[Test]
public void TestNodeCleaner()
{
string xml = @"
To be added.
To be added.
written docs
Written but not provided
"; string xml2 = @"
written docs
";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlDocument incomingDoc = new XmlDocument();
incomingDoc.LoadXml(xml2);
DocUtils.ClearNodesIfNotDefault(doc.FirstChild, incomingDoc.FirstChild);
Assert.IsTrue(doc.FirstChild.ChildNodes.Count == 3);
}
[Test]
public void TestNodeCleaner2()
{
string xml = @"
To be added.
To be added.
written docs
random text
Written but not provided
"; string xml2 = @"
new summary
To be added.
random text
written docs but changed
Written but and
";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlDocument incomingDoc = new XmlDocument();
incomingDoc.LoadXml(xml2);
DocUtils.ClearNodesIfNotDefault(doc.FirstChild, incomingDoc.FirstChild);
Assert.IsTrue(doc.FirstChild.ChildNodes.Count == 0);
}
[Test]
public void DocidCheck()
{
XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(XmlConsts.CheckDocidXml);
//c# MemberSignature is the same,but docid not
var listA = doc.SelectNodes("/Type/Members/Member[@MemberName='op_Implicit']");
if (listA.Count == 2)
{
var Notequal = DocUtils.DocIdCheck(listA[0], (XmlElement)listA[1]);
Assert.IsTrue(Notequal);
}
//note:c not have docid item in xml
var b = doc.SelectSingleNode("/Type/Members/Member[@MemberName='op_Implicit']");
var c = doc.SelectSingleNode("/Type/Members/Member[@MemberName='.ctor']");
var flg1 = DocUtils.DocIdCheck(b, (XmlElement)c);
Assert.IsFalse(flg1);
//Parameter change position
var flg2 = DocUtils.DocIdCheck(c, (XmlElement)b);
Assert.IsFalse(flg2);
// c# MemberSignature is not same,docid also
var d = doc.SelectSingleNode("/Type/Members/Member[@MemberName='Value']");
var flg3 = DocUtils.DocIdCheck(b, (XmlElement)d);
Assert.IsTrue(flg3);
}
[Test]
public void IsEiiignoredMethod()
{
var type = GetType(typeof(mdoc.Test2.InternalEIICalss));
var member = type.Methods.FirstOrDefault(t => t.FullName == "System.String mdoc.Test2.InternalEIICalss::mdoc.Test.SampleClasses.InterfaceA.get_color()");
Assert.IsTrue(member.IsSpecialName);
member.IsSpecialName = false;
var result = DocUtils.IsEiiIgnoredMethod(member, member.Overrides[0]);
Assert.IsTrue(result);
}
}
}