blob: aa46d6749693ddbcd99379778d63f32786e91f8b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.ui.tests.autoedit;
import org.eclipse.dltk.core.tests.util.StringList;
import org.eclipse.jface.text.BadLocationException;
import org.junit.Test;
public class IndentTests extends JSAutoEditStrategyTestCase {
@Test
public void testIndentInFunctionBody() throws BadLocationException {
StringList code = new StringList();
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("function test() {");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteral() throws BadLocationException {
StringList code = new StringList();
code.add("var x = {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("var x = {");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteralInFunctionCall()
throws BadLocationException {
StringList code = new StringList();
code.add("run({)");
final Document document = createDocument(code);
execute(document,
createCommand(ENTER, document.getEndOfLineOffset(0) - 1));
StringList expected = new StringList();
expected.add("run({");
expected.add(TAB);
expected.add("})");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteralFunctionBody()
throws BadLocationException {
StringList code = new StringList();
code.add("var methods = {");
code.add(TAB + "/**");
code.add(TAB + " * Hello");
code.add(TAB + " */");
code.add(TAB + "hello: function() {");
code.add(TAB + TAB + "var a = 1");
code.add(TAB + "}");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(4)));
StringList expected = new StringList();
expected.add("var methods = {");
expected.add(TAB + "/**");
expected.add(TAB + " * Hello");
expected.add(TAB + " */");
expected.add(TAB + "hello: function() {");
expected.add(TAB + TAB);
expected.add(TAB + TAB + "var a = 1");
expected.add(TAB + "}");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentIfBetweenFunctionAndDoc() throws BadLocationException {
StringList code = new StringList();
code.add("var methods = {");
code.add(TAB + "/**");
code.add(TAB + " * Hello");
code.add(TAB + " */");
code.add(TAB + "hello: function() {");
code.add(TAB + TAB + "var a = 1");
code.add(TAB + "}");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getLineOffset(4)));
StringList expected = new StringList();
expected.add("var methods = {");
expected.add(TAB + "/**");
expected.add(TAB + " * Hello");
expected.add(TAB + " */");
expected.add("");
expected.add(TAB + "hello: function() {");
expected.add(TAB + TAB + "var a = 1");
expected.add(TAB + "}");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteralFunctionBody1()
throws BadLocationException {
StringList code = new StringList();
code.add("var methods = {");
code.add(TAB + "/**");
code.add(TAB + " * Hello");
code.add(TAB + " */");
code.add(TAB + "hello: function() {");
code.add("");
code.add(TAB + TAB + "var a = 1");
code.add(TAB + "}");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(5)));
StringList expected = new StringList();
expected.add("var methods = {");
expected.add(TAB + "/**");
expected.add(TAB + " * Hello");
expected.add(TAB + " */");
expected.add(TAB + "hello: function() {");
expected.add("");
expected.add(TAB + TAB);
expected.add(TAB + TAB + "var a = 1");
expected.add(TAB + "}");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteralFunctionBody2()
throws BadLocationException {
StringList code = new StringList();
code.add("var methods = {");
code.add(TAB + "/**");
code.add(TAB + " * Hello");
code.add(TAB + " */");
code.add(TAB + "hello: function() {");
code.add("");
code.add("");
code.add(TAB + TAB + "var a = 1");
code.add(TAB + "}");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(6)));
StringList expected = new StringList();
expected.add("var methods = {");
expected.add(TAB + "/**");
expected.add(TAB + " * Hello");
expected.add(TAB + " */");
expected.add(TAB + "hello: function() {");
expected.add("");
expected.add("");
expected.add(TAB + TAB);
expected.add(TAB + TAB + "var a = 1");
expected.add(TAB + "}");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testIndentInObjectLiteralFunctionBody2ws()
throws BadLocationException {
StringList code = new StringList();
code.add("var methods = {");
code.add(TAB + "/**");
code.add(TAB + " * Hello");
code.add(TAB + " */");
code.add(TAB + "hello: function() {");
code.add(TAB);
code.add(TAB);
code.add(TAB + TAB + "var a = 1");
code.add(TAB + "}");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(6)));
StringList expected = new StringList();
expected.add("var methods = {");
expected.add(TAB + "/**");
expected.add(TAB + " * Hello");
expected.add(TAB + " */");
expected.add(TAB + "hello: function() {");
expected.add(TAB);
expected.add(TAB);
expected.add(TAB + TAB);
expected.add(TAB + TAB + "var a = 1");
expected.add(TAB + "}");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterClassCreate() throws BadLocationException {
StringList code = new StringList();
code.add("var x = test1(),");
code.add(TAB + "y = test2()");
code.add("");
code.add("var a = Class.create({");
code.add(TAB + "a: function() {}");
code.add("});");
final Document document = createDocument(code);
execute(document,
createCommand(ENTER,
document.getEndOfLineOffset(code.size() - 1)));
StringList expected = new StringList();
expected.addAll(code);
expected.add("");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterVarStatement() throws BadLocationException {
StringList code = new StringList();
code.add("function test() {");
code.add(TAB + "var x = null;");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("function test() {");
expected.add(TAB + "var x = null;");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterTypedVarStatement() throws BadLocationException {
StringList code = new StringList();
code.add("function test() {");
code.add(TAB + "var x:String = null;");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("function test() {");
expected.add(TAB + "var x:String = null;");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarInitializedWithArray() throws BadLocationException {
StringList code = new StringList();
code.add("var x = []");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("var x = []");
expected.add("");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterFunction() throws BadLocationException {
StringList code = new StringList();
code.add("function test() {");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("function test() {");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterIf() throws BadLocationException {
StringList code = new StringList();
code.add("if (a > b)");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("if (a > b)");
expected.add(TAB);
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterIfBrace() throws BadLocationException {
StringList code = new StringList();
code.add("if (a > b) {");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("if (a > b) {");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testElse() throws BadLocationException {
StringList code = new StringList();
code.add("if (a > b)");
code.add(TAB + "els");
final Document document = createDocument(code);
execute(document, createCommand("e", document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("if (a > b)");
expected.add("else");
assertEquals(expected.toString(), document.get());
}
@Test
public void testCaseIndent() throws BadLocationException {
StringList code = new StringList();
code.add("switch (x) {");
code.add("case 0:");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("switch (x) {");
expected.add("case 0:");
expected.add(TAB);
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testCaseNext() throws BadLocationException {
StringList code = new StringList();
code.add("switch (x) {");
code.add("case 0:");
code.add(TAB + "cas");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand("e", document.getEndOfLineOffset(2)));
StringList expected = new StringList();
expected.add("switch (x) {");
expected.add("case 0:");
expected.add("case");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testAfterArrayLiteralNext() throws BadLocationException {
StringList code = new StringList();
code.add("var a = [1, 2, 3]");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("var a = [1, 2, 3]");
expected.add("");
assertEquals(expected.toString(), document.get());
}
@Test
public void testRightBrace() throws BadLocationException {
StringList code = new StringList();
code.add("if (a > b) {");
code.add(TAB);
final Document document = createDocument(code);
execute(document, createCommand("}", document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("if (a > b) {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
}