protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { ITypeDeclaration typeDeclaration = GetTargetTypeDeclaration(_highlighting.BaseClass); if (typeDeclaration == null) { return(null); } MemberSignature signature = CreateTransformTextSignature(typeDeclaration); TypeTarget target = CreateTarget(typeDeclaration); var context = new CreateMethodDeclarationContext { AccessRights = AccessRights.PUBLIC, ExecuteTemplateOverMemberBody = false, ExecuteTemplateOverName = false, ExecuteTemplateOverParameters = false, ExecuteTemplateOverReturnType = false, IsAbstract = true, IsStatic = false, MethodSignatures = new[] { signature }, MethodName = T4CSharpIntermediateConverterBase.TransformTextMethodName, SourceReferenceExpressionReference = null, Target = target, }; IntentionResult intentionResult = MethodDeclarationBuilder.Create(context); intentionResult.ExecuteTemplate(); return(null); }
public void WhenMethodIsProvided_ClassIsBuilt_MethodBodyThrowsNotImplemented() { var method = new MethodDeclarationBuilder("TimeoutAfter") .WithReturnType("TimeSpan") .Build(); //implement method builder return null TypeDeclarationSyntax classResult = new ClassBuilder() .WithDefinition("test", "testBase") .WithMethodDeclarations(new MethodDeclaration[] { method }) .Build(); Assert.EndsWith($"{method.ReturnType}{method.Name}(){{thrownewNotImplementedException();}}}}", classResult.ToFullString()); }
public void WhenMethodIsProvided_WhenInterfaceIsBuilt_MethodIsPresent() { var method = new MethodDeclarationBuilder("TimeoutAfter") .WithReturnType("TimeSpan") .Build(); TypeDeclarationSyntax interfaceResult = new InterfaceBuilder() .WithDefinition("test", "testBase") .WithMethodDeclarations(new MethodDeclaration[] { method }) .Build(); Console.WriteLine(interfaceResult); Assert.EndsWith($"{method.ReturnType}{method.Name}();}}", interfaceResult.ToFullString()); }
public void WhenMethodIsProvided_ClassIsBuilt_MethodBodyUsesArrowFunction() { var method = new MethodDeclarationBuilder("TimeoutAfter") .WithReturnType("TimeSpan") .Build(); //implement method builder return null TypeDeclarationSyntax classResult = new ClassBuilder() .WithDefinition("test", "testBase") .WithMethodDeclarations(new MethodDeclaration[] { method }) .Build(); Console.WriteLine(classResult); Assert.EndsWith($"{method.ReturnType}{method.Name}()=>null;}}", classResult.ToFullString()); }
public void WhenMethodIsProvided_ClassIsBuilt_MethodHasParameters() { var method = new MethodDeclarationBuilder("TimeoutAfter") .WithReturnType("TimeSpan") .WithParameter(new Parameter("testParam", "string")) .Build(); //implement method builder return null TypeDeclarationSyntax classResult = new ClassBuilder() .WithDefinition("test", "testBase") .WithMethodDeclarations(new MethodDeclaration[] { method }) .Build(); Console.WriteLine(classResult); var parameter = $"{method.Parameters[0].Type}{method.Parameters[0].Name}"; Assert.EndsWith($"{method.ReturnType}{method.Name}({parameter}){{thrownewNotImplementedException();}}}}", classResult.ToFullString()); }