public void test_ExtractMethodFromClosure() throws Exception { this.addNodeById("5161277940733600914"); this.addNodeById("5161277940733600960"); ExtractMethodRefactoringParameters params = ExtractMethodFactory.createParameters( ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("5161277940733600941"), "jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement"), SNodeOperations.cast( this.getNodeById("5161277940733600950"), "jetbrains.mps.baseLanguage.structure.ExpressionStatement"))); params.setName("foo"); MethodParameter p0 = ListSequence.fromList(params.getParameters()).getElement(0); MethodParameter p1 = ListSequence.fromList(params.getParameters()).getElement(1); if (SNodeOperations.isInstanceOf( p0.getDeclaration(), "jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration")) { ListSequence.fromList(params.getParameters()).setElement(0, p1); ListSequence.fromList(params.getParameters()).setElement(1, p0); } ExtractMethodRefactoring ref = ExtractMethodFactory.createRefactoring(params); ref.doRefactor(); Assert.assertEquals( null, NodesMatcher.matchNodes( ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("5161277940733600919"), "jetbrains.mps.baseLanguage.structure.ClassConcept")), ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("5161277940733600997"), "jetbrains.mps.baseLanguage.structure.ClassConcept")))); }
public void test_extractExpression() throws Exception { this.addNodeById("1230052684510"); this.addNodeById("1230052684520"); this.addNodeById("1230052684528"); this.addNodeById("1230052684538"); SLinkOperations.setTarget( SNodeOperations.cast( this.getNodeById("1230052684533"), "jetbrains.mps.baseLanguage.structure.StaticMethodCall"), "classConcept", SNodeOperations.cast( this.getNodeById("1230052684539"), "jetbrains.mps.baseLanguage.structure.ClassConcept"), false); SLinkOperations.setTarget( SNodeOperations.cast( this.getNodeById("1230052684533"), "jetbrains.mps.baseLanguage.structure.StaticMethodCall"), "baseMethodDeclaration", SNodeOperations.cast( this.getNodeById("1230052684540"), "jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration"), false); ExtractMethodRefactoringParameters params = ExtractMethodFactory.createParameters( ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("1230052684515"), "jetbrains.mps.baseLanguage.structure.StringLiteral"))); params.setName("foo"); params.setVisibilityLevel(VisibilityLevel.PUBLIC); ExtractMethodRefactoring ref = ExtractMethodFactory.createRefactoring(params); ref.setStaticContainer( SNodeOperations.cast( this.getNodeById("1230052684521"), "jetbrains.mps.baseLanguage.structure.ClassConcept")); ref.doRefactor(); { List<SNode> nodesBefore = ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("1230052684511"), "jetbrains.mps.lang.intentions.structure.IntentionDeclaration"), SNodeOperations.cast( this.getNodeById("1230052684521"), "jetbrains.mps.baseLanguage.structure.ClassConcept")); List<SNode> nodesAfter = ListSequence.fromListAndArray( new ArrayList<SNode>(), SNodeOperations.cast( this.getNodeById("1230052684529"), "jetbrains.mps.lang.intentions.structure.IntentionDeclaration"), SNodeOperations.cast( this.getNodeById("1230052684539"), "jetbrains.mps.baseLanguage.structure.ClassConcept")); Assert.assertNull( "nodes '" + nodesBefore + "' and '" + nodesAfter + "' do not match!", NodesMatcher.matchNodes(nodesBefore, nodesAfter)); } }