Example #1
0
        public PropertyBasedIndexerMock(MocklisTypesForSymbols typesForSymbols, INamedTypeSymbol classSymbol, INamedTypeSymbol interfaceSymbol,
                                        IPropertySymbol symbol,
                                        string mockMemberName, bool strict, bool veryStrict) : base(typesForSymbols,
                                                                                                    classSymbol, interfaceSymbol, symbol, mockMemberName, strict, veryStrict)
        {
            var builder = new SingleTypeOrValueTupleBuilder(TypesForSymbols);

            foreach (var p in symbol.Parameters)
            {
                builder.AddParameter(p);
            }

            KeyType = builder.Build(mockMemberName);

            var keyTypeSyntax = KeyType.BuildTypeSyntax();

            KeyTypeSyntax = keyTypeSyntax ?? throw new ArgumentException("Property symbol must have at least one parameter", nameof(symbol));

            ValueTypeSyntax = typesForSymbols.ParseTypeName(symbol.Type, symbol.NullableOrOblivious());

            MockPropertyType = typesForSymbols.IndexerMock(KeyTypeSyntax, ValueTypeSyntax);
        }