package jp.ne.ruru.park.ando.ee2e.editors; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.*; import junit.framework.TestCase; /** * Indentation fails for circle mark.
*
* Until a punctuation mark appears for the first time, * the number of circle mark is counted. * Supposing the direction of a left circle mark is increases, * a space is moved to this position.
*
* (*) punctuation mark==";","{","}"
* (*) circle mark=="(",")","[","]"
*
* (ex 1 -- Basic)
 *    Element a = new Element("b");
 *    Element c = new Element("d").
 *        addContent(new Element("e").
 *                   addContent(new Element("f")));
 *    Element g = new Element("h");
* * (ex 2 -- Advance)
 *    Element i = new Element("j");
 *    int k = new Element("l").
 *        getData() + (getElement("m").
 *                     getData() + 
 *                     this.getData());
 *    Element n = new Element("o");
* * (ex 3 -- Method)
 *    void test(int value1, 
 *              int value2) { 
 *        this.foo();
 *    }
* * (ex 4 -- Method call)
 *    this.foo();
 *    testMethods(1,
 *                2);
 *    this.bar();
 * 
* @author Toshikazu Ando [ ando@park.ruru.ne.jp ] */ public class EE2EIndentJavaCircleTest extends EE2EIndentJavaTest { /** * Constructor for EE2EIndentJavaCommentTest. * @param name */ public EE2EIndentJavaCircleTest(String name) { super(name); } public void testBasic() { String base = " Element a = new Element(\"a\");\n" + " Element b = new Element(\"c\").\n" + " addContent(new Element(\"d\").\n" + " addContent(new Element(\"e\")));\n"; String now = "Element f = new Element(\"g\");"; String answer = base + this.getSpace(4) + now; now = " " + now; this.doIndent(base, now, answer); } public void testBasicBeforeX1() { String base = " Element a = new Element(\"a\");\n" + " Element b = new Element(\"c\").\n" + " addContent(new Element(\"d\").\n"; String now = "addContent(new Element(\"e\")));"; String answer = base + this.getSpace(19) + now; now = " " + now; this.doIndent(base, now, answer); } public void testBasicBeforeX2() { String base = " Element a = new Element(\"a\");\n" + " Element b = new Element(\"c\").\n"; String now = "addContent(new Element(\"d\")."; String answer = base + this.getSpace(8) + now; now = " " + now; this.doIndent(base, now, answer); } public void testBasicBeforeX3() { String base = " Element a = new Element(\"a\");\n"; String now = "Element b = new Element(\"c\")."; String answer = base + this.getSpace(4) + now; now = " " + now; this.doIndent(base, now, answer); } public void testAdvance() { String base = " Element h = new Element(\"g\");\n" + " Element h = new Element(\"g\");\n" + " int i = new Element(\"j\").\n" + " getData() + (getElement(\"k\").\n" + " getData() +\n" + " this.getData());\n"; String now = "Element k = new Element(\"l\");"; String answer = base + this.getSpace(4) + now; now = " " + now; this.doIndent(base, now, answer); } public void testAdvanceBeforeX1() { String base = " Element h = new Element(\"g\");\n" + " int i = new Element(\"j\").\n" + " getData() + (getElement(\"k\").\n" + " getData() +\n"; String now = "this.getData());"; String answer = base + this.getSpace(21) + now; now = " " + now; this.doIndent(base, now, answer); } public void testAdvanceBeforeX2() { String base = " Element h = new Element(\"g\");\n" + " int i = new Element(\"j\").\n" + " getData() + (getElement(\"k\").\n"; String now = "getData() + "; String answer = base + this.getSpace(21) + now; now = " " + now; this.doIndent(base, now, answer); } public void testAdvanceBeforeX3() { String base = " Element h = new Element(\"g\");\n" + " int i = new Element(\"j\").\n"; String now = "getData() + (getElement(\"k\")."; String answer = base + this.getSpace(8) + now; now = " " + now; this.doIndent(base, now, answer); } public void testMethod() { String base = " void test(int value1,\n" + " int value2) {\n" + " this.foo();\n"; String now = "}"; String answer = base + this.getSpace(4) + now; now = " " + now; this.doIndent(base, now, answer); } public void testMethodBeforeX1() { String base = " void test(int value1,\n" + " int value2) {\n"; String now = "this.foo();"; String answer = base + this.getSpace(8) + now; now = " " + now; this.doIndent(base, now, answer); } public void testMethodBeforeX2() { String base = " void test(int value1,\n"; String now = "int value2) {"; String answer = base + this.getSpace(14) + now; now = " " + now; this.doIndent(base, now, answer); } public void testMethodCall() { String base = " this.foo();\n" + " testMethods(1,\n" + " 2);\n"; String now = "this.bar();"; String answer = base + this.getSpace(4) + now; now = " " + now; this.doIndent(base, now, answer); } public void testMethodCallBefore() { String base = " this.foo();\n" + " testMethods(1,\n"; String now = "2);"; String answer = base + this.getSpace(16) + now; now = " " + now; this.doIndent(base, now, answer); } public void testCheckCercle() throws BadLocationException { EE2EIndentJava indent = new EE2EIndentJava(4); // IDocument document = new Document( "(\n" + "}\n" + "hogehoge()"); int ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "(\n" + "{\n" + "hogehoge()"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "(\n" + ";\n" + "hogehoge()"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "foo();\n" + "1234("); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 5); // document = new Document( "foo();\n" + "1234(("); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 6); // document = new Document( "foo();\n" + "1234(()) + 6789()"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "foo();\n" + ")"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "foo();\n" + "aa() + bb("); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 10); // document = new Document( "foo();\n" + "aa() + bb(aaa,"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 10); // document = new Document( "foo();\n" + "aaa( + bb()"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 4); // document = new Document( "foo();\n" + "aa() + bb[1]"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, -1); // document = new Document( "foo();\n" + "aa() + bb["); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 10); // document = new Document( "foo();\n" + "aaa[ + bb()"); ans = indent.checkCercle(document.getLength() -1 ,document); TestCase.assertEquals(ans, 4); } }