/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * Created on Jul 19, 2006 * @author Fabio */ package org.python.pydev.editor.actions; import junit.framework.TestCase; import org.eclipse.jface.text.Document; import org.python.pydev.core.docutils.PySelection; import org.python.pydev.editor.actions.PyFormatStd.FormatStd; import org.python.pydev.editor.autoedit.DefaultIndentPrefs; import org.python.pydev.editor.autoedit.TestIndentPrefs; import org.python.pydev.shared_core.structure.Tuple; public class PyUncommentTest extends TestCase { public static void main(String[] args) { PyUncommentTest test = new PyUncommentTest(); try { test.setUp(); test.testUncommentToProperIndentation3(); test.tearDown(); junit.textui.TestRunner.run(PyUncommentTest.class); } catch (Exception e) { e.printStackTrace(); } } private FormatStd std; @Override protected void setUp() throws Exception { std = new PyFormatStd.FormatStd(); } public void testUncomment() throws Exception { std.spacesInStartComment = 1; Document doc = new Document("#a\n" + "#b"); PySelection ps = new PySelection(doc, 0, 0, doc.getLength()); assertEquals(new Tuple<Integer, Integer>(0, 3), new PyUncomment(std).perform(ps)); String expected = "a\n" + "b"; assertEquals(expected, doc.get()); } public void testUncommentToProperIndentation() throws Exception { std.spacesInStartComment = 1; //When uncommenting, we should move the code uncommented to a proper indentation. Document doc = new Document("# a\n" + "#b"); PySelection ps = new PySelection(doc, 0, 0, doc.getLength()); assertEquals(new Tuple<Integer, Integer>(0, 4), new PyUncomment(std).perform(ps)); String expected = " a\n" + "b"; assertEquals(expected, doc.get()); } public void testUncommentToProperIndentation2() throws Exception { std.spacesInStartComment = 1; //When uncommenting, we should move the code uncommented to a proper indentation. Document doc = new Document("# a\n" + "# b"); PySelection ps = new PySelection(doc, 0, 0, doc.getLength()); assertEquals(new Tuple<Integer, Integer>(0, 3), new PyUncomment(std).perform(ps)); String expected = "a\n" + "b"; assertEquals(expected, doc.get()); } public void testUncommentToProperIndentation3() throws Exception { std.spacesInStartComment = 1; //When uncommenting, we should move the code uncommented to a proper indentation. Document doc = new Document("# a\n" + "# b\n#\n#\n"); PySelection ps = new PySelection(doc, 0, 0, doc.getLength()); assertEquals(new Tuple<Integer, Integer>(0, 5), new PyUncomment(std).perform(ps)); String expected = "a\n" + "b\n\n\n"; assertEquals(expected, doc.get()); } public void testUncommentWithTabs() throws Exception { std.spacesInStartComment = 1; DefaultIndentPrefs.set(new TestIndentPrefs(false, 4)); try { //When uncommenting, we should move the code uncommented to a proper indentation. Document doc = new Document("# \ta"); PySelection ps = new PySelection(doc, 0, 0, doc.getLength()); assertEquals(new Tuple<Integer, Integer>(0, 2), new PyUncomment(std).perform(ps)); String expected = "\ta"; assertEquals(expected, doc.get()); } finally { DefaultIndentPrefs.set(null); } } }