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); } }