Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }