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); }
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); }