package org.eclipse.photran.internal.core.tests.f_source_editing;

import org.eclipse.photran.internal.core.tests.AbstractSourceEditorTestCase;

public class TestPaste extends AbstractSourceEditorTestCase
{
//    public void testPasteQOutside() throws Exception
//    {
//        ASTExecutableProgramNode ast = load("hello-1-initial.f90");
//        
//        ASTSubroutineSubprogramNode q = ast.getASTProgramUnit(1).getASTMainProgram().getASTMainRange().getASTBodyPlusInternals().getASTInternalSubprogram(2).getASTSubroutineSubprogram();
//        SourceEditor.cut(q);
//        SourceEditor.pasteAsFirstChild(q, ast.getASTProgramUnit(0), ast, false);
//        assertEquals(load("hello-5-q-pasted.f90"), ast);
//    }
//
//    public void testPasteQAtBottom() throws Exception
//    {
//        ASTExecutableProgramNode ast = load("hello-1-initial.f90");
//        
//        ASTSubroutineSubprogramNode q = ast.getASTProgramUnit(1).getASTMainProgram().getASTMainRange().getASTBodyPlusInternals().getASTInternalSubprogram(2).getASTSubroutineSubprogram();
//        SourceEditor.cut(q);
//        SourceEditor.pasteAsLastChild(q, ast.getASTProgramUnit(0), ast, false);
//        assertEquals(load("hello-6-q-pasted-at-bottom.f90"), ast);
//    }
}
