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); }
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); }
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); } } }
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); }
public void GenericType_IsGeneratableType_ReturnsExpected(INamedTypeSymbol input, bool expected) { Assert.Equal(expected, GeneratedTypeFilter.IsGeneratableType(input)); }