Esempio n. 1
0
        public void NonGenericType_TryGetGeneratableType_ReturnsExpected(INamedTypeSymbol input, bool expected)
        {
            var result = GeneratedTypeFilter.TryGetGeneratableType(input, out var outParam);

            Assert.Equal(expected, result);
            Assert.Equal(input, outParam);
        }
Esempio n. 2
0
        public void GenericType_TryGetGeneratableType_ReturnsTrueAndInnerType()
        {
            INamedTypeSymbol innerTypeArgument = GetGeneratableType();
            var input = Substitute.For <INamedTypeSymbol>();

            input.IsGenericType.Returns(true);
            input.IsUnboundGenericType.Returns(false);
            input.TypeArguments.Returns(ImmutableArray.Create <ITypeSymbol>(innerTypeArgument));
            input.SpecialType.Returns(SpecialType.System_Collections_Generic_IEnumerable_T);

            var result = GeneratedTypeFilter.TryGetGeneratableType(input, out var outParam);

            Assert.True(result);
            Assert.Equal(innerTypeArgument, outParam);
        }
Esempio n. 3
0
    private void WalkTree(List <GeneratedWrapper> result, SyntaxTree tree)
    {
        var typesToWrap = _walker.Process(tree.GetRoot(), _compilation.GetSemanticModel(tree));

        PushToWrap(typesToWrap);
        while (_typesToWrap.Count > 0)
        {
            var typeInfo       = _typesToWrap.Pop();
            var sourceTypeName = GeneratedTypeFilter.SourceTypeName(typeInfo);
            if (!result.Any(x => x.SourceTypeFullName == sourceTypeName) &&
                GeneratedTypeFilter.TryGetGeneratableType(typeInfo, out var typeInfoToGenerate))
            {
                var generatedTypeResult = _typeBuilder.BuildWrapperType(typeInfoToGenerate, sourceTypeName);
                PushToWrap(generatedTypeResult.ToProcessTypes);
                result.Add(generatedTypeResult);
            }
        }
    }
Esempio n. 4
0
        public void DictionaryType_TryGetGeneratableType_ReturnsTrueAndValueType()
        {
            var dictionaryKeyType   = GetGeneratableType();
            var dictionaryValueType = GetGeneratableType();
            var input = Substitute.For <INamedTypeSymbol>();

            input.IsGenericType.Returns(true);
            input.IsUnboundGenericType.Returns(false);
            input.TypeArguments.Returns(ImmutableArray.Create <ITypeSymbol>(dictionaryKeyType, dictionaryValueType));
            input.SpecialType.Returns(SpecialType.None);
            input.Name.Returns("Dictionary");
            input.ContainingNamespace.ToDisplayString().Returns("System.Collections.Generic");

            var result = GeneratedTypeFilter.TryGetGeneratableType(input, out var outParam);

            Assert.True(result);
            Assert.Equal(dictionaryValueType, outParam);
        }
Esempio n. 5
0
 public void GenericType_IsGeneratableType_ReturnsExpected(INamedTypeSymbol input, bool expected)
 {
     Assert.Equal(expected, GeneratedTypeFilter.IsGeneratableType(input));
 }