Пример #1
0
 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) })));
 }
Пример #2
0
 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))
     })));
 }
Пример #3
0
        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());
        }
Пример #4
0
 public string CreateClass(string csharp, IMethodBuilder methodBuilder, IParameterTransform transform, params SyntaxKind[] fieldModifiers)
 {
     return(CreateClass(csharp, methodBuilder, transform, string.Empty, fieldModifiers));
 }
Пример #5
0
 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)));
     }
 }
Пример #6
0
 public DSLTestRunner(ITestExecutionEngine executionEngine, IParameterTransform tranform)
 {
     _TestRunner = new TestRunner(executionEngine);
     _Transform  = tranform;
 }
Пример #7
0
 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) })));
 }