public void ToMemberId_returns_expected_value_for_nested_constructued_types_03() { // ARRANGE var cs = @" using System; using System.Collections.Generic; namespace Namespace1.Namespace2 { public class Class1 { public void Method1(Class2<string>.NestedClass1.NestedClass2<int> parameter) => throw new NotImplementedException(); } public class Class2<T1> { public class NestedClass1 { public class NestedClass2<T2> { } } } } "; using var assembly = Compile(cs); var typeReference = assembly.MainModule.Types .Single(x => x.Name == "Class1") .Methods .Single(x => x.Name == "Method1") .Parameters .Single() .ParameterType; // type: TestClass_NestedTypes<string>.NestedClass1.NestedClass2<int> var expectedMemberId = new GenericTypeInstanceId( new SimpleTypeId( new GenericTypeInstanceId( "Namespace1.Namespace2", "Class2", new[] { new SimpleTypeId("System", "String") }), "NestedClass1"), "NestedClass2", new[] { new SimpleTypeId("System", "Int32") } ); // ACT var actualMemberId = typeReference.ToMemberId(); // ASSERT Assert.NotNull(actualMemberId); Assert.Equal(expectedMemberId, actualMemberId); }
public void ToTypeId_returns_expected_value_08() { // ARRANGE var stringTypeId = new SimpleTypeId("System", "String"); var expected = new GenericTypeInstanceId(new NamespaceId("Namespace1"), "Class1", new[] { stringTypeId }); // ACT var actual = TypeIdBuilder.Create() .AddNameSegment("Namespace1") .AddNameSegment("Class1") .SetTypeArguments(new[] { stringTypeId }) .ToTypeId(); // ASSERT Assert.Equal(expected, actual); }
public void ToMemberId_returns_expected_value_for_constructued_types_02() { // ARRANGE var cs = @" using System; using System.Collections.Generic; namespace Namespace1.Namespace2 { public class Class1 { public string Method1<T>(IEnumerable<ArraySegment<T>> bar) => throw new NotImplementedException(); } } "; using var assembly = Compile(cs); var typeReference = assembly.MainModule.Types .Single(x => x.Name == "Class1") .Methods .Single(x => x.Name == "Method1") .Parameters .Single() .ParameterType; var expectedMemberId = new GenericTypeInstanceId( "System.Collections.Generic", "IEnumerable", new[] { new GenericTypeInstanceId( new NamespaceId("System"), "ArraySegment", new [] { new GenericTypeParameterId(GenericTypeParameterId.MemberKind.Method, 0) }) } ); // ACT var actualMemberId = typeReference.ToMemberId(); // ASSERT Assert.NotNull(actualMemberId); Assert.Equal(expectedMemberId, actualMemberId); }