public IType this[GenericTypeId c] { get { var i = (int)c; return(_generics[i].Value); } }
public void BeginNestedType_has_no_effect_if_not_followed_by_a_AddNameSegemtn_call() { // ARRANGE var expected = new GenericTypeId(new NamespaceId("Namespace1.Namespace2"), "Class1", 1); // ACT var actual = TypeIdBuilder.Create() .AddNameSegment("Namespace1") .AddNameSegment("Namespace2") .AddNameSegment("Class1") .SetArity(1) .BeginNestedType() .ToTypeId(); // ASSERT Assert.Equal(expected, actual); }
public void SetArity_implicitly_creates_a_nested_type() { // ARRANGE var outerType = new GenericTypeId(new NamespaceId("Namespace1.Namespace2"), "Class1", 1); var expected = new SimpleTypeId(outerType, "NestedClass1"); // ACT var actual = TypeIdBuilder.Create() .AddNameSegment("Namespace1") .AddNameSegment("Namespace2") .AddNameSegment("Class1") .SetArity(1) .AddNameSegment("NestedClass1") .ToTypeId(); // ASSERT Assert.Equal(expected, actual); }
public void ToTypeId_returns_expected_value_07() { // ARRANGE var expected = new GenericTypeId(new NamespaceId("MdDoc.Test.TestData"), "TestClass_GenericType", 1); // ACT var actual = TypeIdBuilder.Create() .AddNameSegment("MdDoc") .AddNameSegment("Test") .AddNameSegment("TestData") .AddNameSegment("TestClass_GenericType") .SetArity(1) .ToTypeId(); // ASSERT Assert.Equal(expected, actual); }
public void ToMemberId_returns_the_expected_value_for_nested_types_06() { // ARRANGE var cs = @" using System; using System.Collections.Generic; namespace Namespace1.Namespace2 { public class Class1<T1> { public class NestedClass1 { public class NestedClass2<T2> { } } } } "; using var assembly = Compile(cs); var typeDefinition = assembly.MainModule.Types .Single(x => x.Name == "Class1`1") .NestedTypes .Single() .NestedTypes .Single(); var expectedId = new GenericTypeId( new SimpleTypeId( new GenericTypeId("Namespace1.Namespace2", "Class1", 1), "NestedClass1"), "NestedClass2", 1 ); // ACT var actualId = typeDefinition.ToMemberId(); // ASSERT Assert.NotNull(actualId); Assert.Equal(expectedId, actualId); }
public void ToMemberId_returns_expected_value_for_type_definitions_02() { // ARRANGE var cs = @" namespace Namespace1.Namespace2 { public class Class1<T1> { } } "; using var assembly = Compile(cs); var typeReference = assembly.MainModule.Types.Single(x => x.Name == "Class1`1"); var expectedMemberId = new GenericTypeId("Namespace1.Namespace2", "Class1", 1); // ACT var actualMemberId = typeReference.ToMemberId(); // ASSERT Assert.NotNull(actualMemberId); Assert.Equal(expectedMemberId, actualMemberId); }
public IType MakeInstance(GenericTypeId typeId, IType arg) { var type = GetType(typeId); return(TypeFactory.MakeGenericType(type, arg)); }
public IType GetType(GenericTypeId id) { return(Types[id]); }
public void TryGetDocumentationComments_gets_expected_docs_for_type() { // ARRANGE var cs = @" using System; /// <summary> /// This is a test class for testing parsing of XML documentation /// </summary> /// <remarks>Remarks</remarks> /// <example>Example1</example> /// <typeparam name=""T1"">Type parameter 1</typeparam> /// <typeparam name=""T2"">Type parameter 2</typeparam> /// <seealso cref=""Class2"">Some text</seealso> /// <seealso cref=""Interface1"" /> public class Class1<T1, T2> { } public class Class2 { } public interface Interface1 { } "; using var assembly = Compile(cs, out var xmlDocs); var id = new GenericTypeId(NamespaceId.GlobalNamespace, "Class1", 2); // ACT var sut = new XmlDocsProvider(assembly, xmlDocs, NullLogger.Instance); var docs = sut.TryGetDocumentationComments(id); // ASSERT Assert.NotNull(docs); Assert.NotNull(docs !.MemberId); Assert.IsAssignableFrom <GenericTypeId>(docs.MemberId); Assert.NotNull(docs.Summary); Assert.NotNull(docs.Remarks); Assert.NotNull(docs.Example); Assert.NotNull(docs.TypeParameters); Assert.Equal(2, docs.TypeParameters.Count); Assert.Contains(docs.TypeParameters, x => x.Key == "T1"); Assert.Contains(docs.TypeParameters, x => x.Key == "T2"); Assert.All(docs.SeeAlso, seeAlso => Assert.NotNull(seeAlso.MemberId)); Assert.Equal(2, docs.SeeAlso.Count); Assert.Contains( docs.SeeAlso, seeAlso => seeAlso.Text.Elements.Count == 1 && seeAlso.MemberId !.Equals(new SimpleTypeId(NamespaceId.GlobalNamespace, "Class2")) ); Assert.Contains( docs.SeeAlso, seeAlso => seeAlso.Text.Elements.Count == 0 && seeAlso.MemberId !.Equals(new SimpleTypeId(NamespaceId.GlobalNamespace, "Interface1")) ); }