public SimpleStubsGenerator(IProjectStubber projectStubber, SimpleStubsConfig config)
        {
            _projectStubber = projectStubber;
            _config         = config;

            MSBuildLocator.RegisterDefaults();
        }
 public ProjectStubber(IInterfaceStubber interfaceStubber, SimpleStubsConfig config)
 {
     _interfaceStubber = interfaceStubber;
     _config           = config;
 }
        private ClassDeclarationSyntax AddConstructor(INamedTypeSymbol interfaceType, ClassDeclarationSyntax classDclr, SimpleStubsConfig config)
        {
            string ctorName            = NamingUtils.GetStubName(interfaceType.Name);
            string defaultMockBehavior = GetValidMockBehaviorEnumValue(config.DefaultMockBehavior);

            var ctorParameter =
                SF.Parameter(SF.Identifier("mockBehavior"))
                .WithType(SF.ParseTypeName("MockBehavior"))
                .WithDefault(SF.EqualsValueClause(SF.ParseExpression($"MockBehavior.{defaultMockBehavior}")));

            classDclr = classDclr.AddMembers(SF.ConstructorDeclaration(ctorName)
                                             .WithModifiers(SF.TokenList(SF.Token(SyntaxKind.PublicKeyword)))
                                             .WithParameterList(SF.ParameterList().AddParameters(ctorParameter))
                                             .WithBody(SF.Block().AddStatements(SF.ExpressionStatement(
                                                                                    SF.AssignmentExpression(
                                                                                        SyntaxKind.SimpleAssignmentExpression,
                                                                                        SF.IdentifierName("MockBehavior"),
                                                                                        SF.IdentifierName("mockBehavior")))
                                                                                )));
            return(classDclr);
        }
Esempio n. 4
0
 public SimpleStubsGenerator(IProjectStubber projectStubber, SimpleStubsConfig config)
 {
     _projectStubber = projectStubber;
     _config         = config;
 }
        public CompilationUnitSyntax StubInterface(CompilationUnitSyntax cu, InterfaceDeclarationSyntax interfaceDclr, SemanticModel semanticModel, SimpleStubsConfig config)
        {
            INamedTypeSymbol           interfaceType = semanticModel.GetDeclaredSymbol(interfaceDclr);
            NamespaceDeclarationSyntax namespaceNode = GetNamespaceNode(interfaceDclr);
            string interfaceName             = interfaceType.GetGenericName();
            string stubName                  = NamingUtils.GetStubName(interfaceName);
            ClassDeclarationSyntax classDclr = SF.ClassDeclaration(SF.Identifier(stubName))
                                               .AddModifiers(SF.Token(RoslynUtils.GetVisibilityKeyword(interfaceType)))
                                               .WithBaseList(RoslynUtils.BaseList(interfaceName))
                                               .AddAttributeLists(AttributeListList(Attribute("CompilerGenerated")).ToArray());

            classDclr = RoslynUtils.CopyGenericConstraints(interfaceType, classDclr);
            classDclr = AddStubContainerField(classDclr, stubName);
            classDclr = AddMockBehaviorProperty(classDclr);
            classDclr = StubProperties(interfaceType, classDclr, semanticModel);
            classDclr = StubMethods(interfaceType, classDclr, semanticModel);
            classDclr = AddConstructor(interfaceType, classDclr, config);

            string fullNameSpace = semanticModel.GetDeclaredSymbol(namespaceNode).ToString();
            NamespaceDeclarationSyntax namespaceDclr = SF.NamespaceDeclaration(SF.IdentifierName(fullNameSpace))
                                                       .WithUsings(namespaceNode.Usings);

            namespaceDclr = namespaceDclr.AddMembers(classDclr);
            cu            = cu.AddMembers(namespaceDclr);
            return(cu);
        }