⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sourcemoduleproposaltest.java

📁 Python Development Environment (Python IDE plugin for Eclipse). Features editor, code completion, re
💻 JAVA
字号:
/*
 * Created on Apr 14, 2005
 *
 * @author Fabio Zadrozny
 */
package org.python.pydev.editor.codecompletion.revisited;

import junit.framework.TestCase;

import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.python.pydev.core.IPythonNature;
import org.python.pydev.core.structure.CompletionRecursionException;
import org.python.pydev.editor.codecompletion.IPyCompletionProposal;
import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule;
import org.python.pydev.editor.codecompletion.revisited.modules.SourceModule;

/**
 * @author Fabio Zadrozny
 */
public class SourceModuleProposalTest extends TestCase {

    public static void main(String[] args) {
        try {
            SourceModuleProposalTest test = new SourceModuleProposalTest();
            test.setUp();
            test.testOffset();
            test.tearDown();
            junit.textui.TestRunner.run(SourceModuleProposalTest.class);
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    private IPythonNature nature;

    /*
     * @see TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
        nature = CodeCompletionTestsBase.createStaticNature();
    }

    /*
     * @see TestCase#tearDown()
     */
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    
    public void testOffset() throws BadLocationException{
        String docStr = ""+
        "class A:                   \n" +
        "    pass                   \n" +
        "                           \n" +
        "if __name__ == '__main__': \n" +
        "    pass                   \n";
        
        checkProposal(docStr, 2, "A" , SourceModuleProposal.ADD_TO_LAST_CLASS_LINE);
        checkProposal(docStr, 2, null, SourceModuleProposal.ADD_TO_LAST_LINE_BEFORE_MAIN);

        docStr = ""+
        "class A:                   \n" +
        "    pass                   \n" +
        "                           \n" +
        "class B:                   \n" +
        "    pass                   \n" +
        "                           \n" +
        "if __name__ == '__main__': \n" +
        "    pass                   \n";
        
        checkProposal(docStr, 5, null, SourceModuleProposal.ADD_TO_LAST_LINE_BEFORE_MAIN);
        checkProposal(docStr, 2, "A" , SourceModuleProposal.ADD_TO_LAST_CLASS_LINE);
        
    }

    /**
     * @param docStr
     * @param line
     * @param definition
     * @param addTo
     * @throws BadLocationException
     */
    private void checkProposal(String docStr, int line, String tokDef, int addTo) throws BadLocationException {
        IDocument doc = new Document(docStr);
        SourceModule mod = (SourceModule) AbstractModule.createModuleFromDoc("", null, doc, nature, 0);
        SourceModuleProposal s = new SourceModuleProposal("",0,0,0,null,"",null,"",mod, IPyCompletionProposal.PRIORITY_DEFAULT);
        s.doc = doc;
        if(tokDef != null)
			try {
				s.definition = mod.findGlobalTokDef(CompletionStateFactory.getEmptyCompletionState(tokDef, null), null);
			} catch (CompletionRecursionException e) {
				throw new RuntimeException(e);
			}
        s.addTo = addTo;
        IRegion region = doc.getLineInformation(line);
        assertEquals(region.getOffset()+region.getLength(), s.getReplacementOffset());
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -