File: EnumeratorTests.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (167 lines) | stat: -rw-r--r-- 6,757 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
using NUnit.Framework;
using System;
using System.Linq;
using System.Xml;
using Mono.Cecil;
using Mono.Cecil.Rocks;
using Mono.Documentation.Updater;
using Mono.Documentation.Updater.Frameworks;

namespace mdoc.Test
{
    /// <summary>
    /// This is for testing the DocumentationEnumerator
    /// </summary>
    [TestFixture ()]
    public class EnumeratorTests : CecilBaseTest
    {


        [Test]
        public void FindProperty_NonEII () => TestProperty ("AProperty");

        [Test]
        public void FindProperty_EII1 () => TestProperty ("mdoc.Test.EnumeratorTests.IFace1.AProperty");

        [Test]
        public void FindProperty_EII2 () => TestProperty ("mdoc.Test.EnumeratorTests.IFace2.AProperty");

        [Test]
        public void FindProperty_NonExistent ()
        {
            string propertyName = "mdoc.Test.EnumeratorTests.IDontExist.AProperty";

            TypeDefinition theclass = GetTypeDef<ConcreteClass> ();

            var members = DocumentationEnumerator.GetReflectionMembers (theclass, propertyName, "Property").ToArray ();


            Assert.IsFalse (members.Any (), "Invalid Member Matched");
        }

        [Test]
        public void GetMember () => TestPropertyMember ("AProperty", XML_PROPERTY);

        [Test]
        public void GetMember_EII1 () => TestPropertyMember ("mdoc.Test.EnumeratorTests.IFace1.AProperty", XML_PROPERTY_IFACE1);

        [Test]
        public void GetMember_EII2 () => TestPropertyMember ("mdoc.Test.EnumeratorTests.IFace2.AProperty", XML_PROPERTY_IFACE2);

        [Test]
        public void GetMethod() => TestMethodMember("BeginRead", XML_METHOD_TESTMETHOD);

        #region Test infrastructure

        private void TestProperty (string propertyName)
        {
            TypeDefinition theclass = GetTypeDef<ConcreteClass> ();

            var members = DocumentationEnumerator.GetReflectionMembers (theclass, propertyName, "Property").ToArray ();

            Assert.IsTrue (members.Any (), "no members found");
            Assert.AreEqual (1, members.Count (), "Different # of members found");
            Assert.AreEqual (propertyName, members.Single ().Name);
        }

        private void TestPropertyMember (string propertyName, string theXml)
        {
            TypeDefinition theclass = GetTypeDef<ConcreteClass> ();

            XmlDocument document = new XmlDocument ();
            document.LoadXml (theXml);

            var member = DocumentationEnumerator.GetMember (theclass, new DocumentationMember (document.FirstChild, FrameworkTypeEntry.Empty));

            Assert.NotNull (member, "didn't find the node");
            Assert.AreEqual (propertyName, member.Name);
        }

        private void TestMethodMember(string methodName, string theXml)
        {
            TypeDefinition theclass = GetTypeDef<ConcreteClass>();

            XmlDocument document = new XmlDocument();
            document.LoadXml(theXml);

            var member = DocumentationEnumerator.GetMember(theclass, new DocumentationMember(document.FirstChild, FrameworkTypeEntry.Empty));

            Assert.NotNull(member, "didn't find the node");
            Assert.AreEqual(methodName, member.Name);
        }

        #endregion

        #region Test Types

        public interface IFace1
        {
            string AProperty { get; set; }
        }

        public interface IFace2
        {
            string AProperty { get; set; }
        }

        public class ConcreteClass : IFace1, IFace2
        {
            public string AProperty { get; set; }
            string IFace1.AProperty { get; set; }
            string IFace2.AProperty { get; set; }
            public IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState) => null;
        }

        #endregion

        #region Test Data

        private string XML_PROPERTY = @"<Member MemberName=""AProperty"">
      <MemberType>Property</MemberType>
      <Implements>
        <InterfaceMember>P:mdoc.Test.EnumeratorTests.IFace1.AProperty</InterfaceMember>
        <InterfaceMember>P:mdoc.Test.EnumeratorTests.IFace2.AProperty</InterfaceMember>
      </Implements>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
    </Member>";

        private string XML_PROPERTY_IFACE1 = @"<Member MemberName=""mdoc.Test.EnumeratorTests.IFace1.AProperty"">
      <MemberType>Property</MemberType>
      <Implements>
        <InterfaceMember>P:mdoc.Test.EnumeratorTests.IFace1.AProperty</InterfaceMember>
      </Implements>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
    </Member>";

        private string XML_PROPERTY_IFACE2 = @"<Member MemberName=""mdoc.Test.EnumeratorTests.IFace2.AProperty"">
      <MemberType>Property</MemberType>
      <Implements>
        <InterfaceMember>P:mdoc.Test.EnumeratorTests.IFace2.AProperty</InterfaceMember>
      </Implements>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
    </Member>";

        private string XML_METHOD_TESTMETHOD = @"<Member MemberName=""BeginRead"">
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.IAsyncResult</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name = ""buffer"" Type=""System.Byte[]"" Index=""0"" FrameworkAlternate=""netcore-1.0;netcore-1.1;netcore-2.0"" />
        <Parameter Name = ""array"" Type=""System.Byte[]"" Index=""0"" FrameworkAlternate=""netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netstandard-2.0"" />
        <Parameter Name = ""offset"" Type=""System.Int32"" Index=""1"" FrameworkAlternate=""netcore-2.0;netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netstandard-2.0"" />
        <Parameter Name = ""count"" Type=""System.Int32"" Index=""2"" FrameworkAlternate=""netcore-2.0;netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netstandard-2.0"" />
        <Parameter Name = ""asyncCallback"" Type=""System.AsyncCallback"" Index=""3"" FrameworkAlternate=""netcore-2.0;netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netstandard-2.0"" />
        <Parameter Name = ""asyncState"" Type=""System.Object"" Index=""4"" FrameworkAlternate=""netcore-2.0;netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netstandard-2.0"" />
      </Parameters>
    </Member>";

        #endregion
    }
}