public MemberDeclarationSyntax Build(ConstructorDeclarationSyntax ctor, IParameterTransform transform) { return(ConstructorDeclaration(ctor.Identifier) .WithParameterList(transform.TransformToParameters(ctor.ParameterList)) .WithBody(ConstructorBody(ctor)) .WithModifiers(TokenList(new SyntaxToken[] { Token(SyntaxKind.PublicKeyword) }))); }
private BlockSyntax InitializeBody(ConstructorDeclarationSyntax ctor, IParameterTransform transform) { return(Block(ctor.ParameterList.Parameters .Select(p => ExpressionSyntaxFor(p.Identifier.ValueText, transform.ChangeType(p), ArgumentList())) .Concat(new ExpressionStatementSyntax[] { ExpressionSyntaxFor(ctor.Identifier.VariableName(), ParseTypeName(ctor.Identifier.ValueText), GetMockObjects(ctor.ParameterList)) }))); }
public string CreateClass(string csharp, IMethodBuilder methodBuilder, IParameterTransform transform, string classSuffix, params SyntaxKind[] fieldModifiers) { var fieldModifierTokens = fieldModifiers.Length > 0 ? fieldModifiers.Select(f => Token(f)).ToArray() : new SyntaxToken[] { Token(SyntaxKind.PrivateKeyword), Token(SyntaxKind.ReadOnlyKeyword) }; var tree = CSharpSyntaxTree.ParseText(csharp); var root = tree.GetRoot(); var ctor = root.DescendantNodes().OfType <ConstructorDeclarationSyntax>().FirstOrDefault(); if (ctor == null) { return(string.Empty); } return(ClassDeclaration(Identifier(string.Concat(ctor.Identifier.Value, classSuffix))) .WithMembers(List(GetFields(ctor, transform, fieldModifierTokens).Concat(new MemberDeclarationSyntax[] { methodBuilder.Build(ctor, transform) }))) .WithModifiers(TokenList(new SyntaxToken[] { Token(SyntaxKind.PublicKeyword) })) .NormalizeWhitespace() .ToFullString()); }
public string CreateClass(string csharp, IMethodBuilder methodBuilder, IParameterTransform transform, params SyntaxKind[] fieldModifiers) { return(CreateClass(csharp, methodBuilder, transform, string.Empty, fieldModifiers)); }
private IEnumerable <FieldDeclarationSyntax> GetFields(ConstructorDeclarationSyntax ctor, IParameterTransform transform, SyntaxToken[] fieldModifiers) { foreach (var param in ctor.ParameterList.Parameters) { yield return(FieldDeclaration(transform.TransformToVariable(param) .WithVariables(SingletonSeparatedList(VariableDeclarator(string.Concat("_", param.Identifier.ValueText))))) .WithModifiers(TokenList(fieldModifiers))); } }
public DSLTestRunner(ITestExecutionEngine executionEngine, IParameterTransform tranform) { _TestRunner = new TestRunner(executionEngine); _Transform = tranform; }
public MemberDeclarationSyntax Build(ConstructorDeclarationSyntax ctor, IParameterTransform transform) { return(MethodDeclaration(PredefinedType(Token(SyntaxKind.VoidKeyword)), "Initialize") .WithBody(InitializeBody(ctor, transform)) .WithModifiers(TokenList(new SyntaxToken[] { Token(SyntaxKind.PrivateKeyword) }))); }