blob: c95799e517cf50ad404900aee46442c2dcdb8c54 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 NumberFour AG
*
* 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:
* NumberFour AG - 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 JSDocTests extends JSAutoEditStrategyTestCase {
@Test
public void testStartJsDoc() throws BadLocationException {
StringList code = new StringList();
code.add("/**");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("/**");
expected.add(" * ");
expected.add(" */");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testStartJsDocViaDocStrategy() throws BadLocationException {
StringList code = new StringList();
code.add("/**");
code.add("function test() {");
code.add("/* body */");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("/**");
expected.add(" * ");
expected.add(" */");
expected.add("function test() {");
expected.add("/* body */");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testContinueJsDoc() throws BadLocationException {
StringList code = new StringList();
code.add("/**");
code.add(" * FUNCTION");
code.add(" */");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("/**");
expected.add(" * FUNCTION");
expected.add(" * ");
expected.add(" */");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testStartMultiLineComment() throws BadLocationException {
StringList code = new StringList();
code.add("/*");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("/*");
expected.add(" * ");
expected.add(" */");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testContinueMultiLineComment() throws BadLocationException {
StringList code = new StringList();
code.add("/*");
code.add(" * FUNCTION");
code.add(" */");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(1)));
StringList expected = new StringList();
expected.add("/*");
expected.add(" * FUNCTION");
expected.add(" * ");
expected.add(" */");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testDontStartMultiLineComment() throws BadLocationException {
StringList code = new StringList();
code.add("/* */");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand(ENTER, document.getEndOfLineOffset(0)));
StringList expected = new StringList();
expected.add("/* */");
expected.add("");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeSimple() throws BadLocationException {
final StringList code = new StringList();
code.add("var /*");
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(0)));
final StringList expected = new StringList();
expected.add("var /** @type {} */ ");
assertEquals(expected.toString(), document.get());
}
private static final String COMMENT = "/* comment */";
@Test
public void testVarTypeSimple_comment() throws BadLocationException {
final StringList code = new StringList();
code.add("var /*");
code.add(COMMENT);
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(0)));
final StringList expected = new StringList();
expected.add("var /** @type {} */ ");
expected.add(COMMENT);
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeContinuationLine() throws BadLocationException {
final StringList code = new StringList();
code.add("var /** @type {String} name,");
code.add(" /*");
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(1)));
final StringList expected = new StringList();
expected.add("var /** @type {String} name,");
expected.add(" /** @type {} */ ");
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeContinuationLine_comment()
throws BadLocationException {
final StringList code = new StringList();
code.add("var /** @type {String} name,");
code.add(" /*");
code.add(COMMENT);
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(1)));
final StringList expected = new StringList();
expected.add("var /** @type {String} name,");
expected.add(" /** @type {} */ ");
expected.add(COMMENT);
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeKeywordOnPreviousLine() throws BadLocationException {
final StringList code = new StringList();
code.add("var");
code.add(" /*");
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(1)));
final StringList expected = new StringList();
expected.add("var");
expected.add(" /** @type {} */ ");
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeKeywordOnPreviousLine_comment()
throws BadLocationException {
final StringList code = new StringList();
code.add("var");
code.add(" /*");
code.add(COMMENT);
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(1)));
final StringList expected = new StringList();
expected.add("var");
expected.add(" /** @type {} */ ");
expected.add(COMMENT);
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeContinuationKeywordOnPreviousLine()
throws BadLocationException {
final StringList code = new StringList();
code.add("var");
code.add(" /** @type {String} name,");
code.add(" /*");
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(2)));
final StringList expected = new StringList();
expected.add("var");
expected.add(" /** @type {String} name,");
expected.add(" /** @type {} */ ");
assertEquals(expected.toString(), document.get());
}
@Test
public void testVarTypeContinuationKeywordOnPreviousLine_comment()
throws BadLocationException {
final StringList code = new StringList();
code.add("var");
code.add(" /** @type {String} name,");
code.add(" /*");
code.add(COMMENT);
final Document document = createDocument(code);
execute(document, createCommand("*", document.getEndOfLineOffset(2)));
final StringList expected = new StringList();
expected.add("var");
expected.add(" /** @type {String} name,");
expected.add(" /** @type {} */ ");
expected.add(COMMENT);
assertEquals(expected.toString(), document.get());
}
@Test
public void testFunctionExpression() throws BadLocationException {
final StringList code = new StringList();
code.add("$(link).click(/*function(){");
code.add("});");
final Document document = createDocument(code);
execute(document, createCommand("*", document.indexOf("function")));
final StringList expected = new StringList();
expected.add("$(link).click(/** */ function(){");
expected.add("});");
assertEquals(expected.toString(), document.get());
}
@Test
public void testFunctionExpression_space() throws BadLocationException {
final StringList code = new StringList();
code.add("$(link).click(/* function(){");
code.add("});");
final Document document = createDocument(code);
execute(document, createCommand("*", document.indexOf(" function")));
final StringList expected = new StringList();
expected.add("$(link).click(/** */ function(){");
expected.add("});");
assertEquals(expected.toString(), document.get());
}
@Test
public void testBeforeFunctionDeclaration_noExpansion()
throws BadLocationException {
final StringList code = new StringList();
code.add("/*");
code.add("function test() {");
code.add("}");
final Document document = createDocument(code);
execute(document, createCommand("*", document.indexOf("/*") + 2));
final StringList expected = new StringList();
expected.add("/**");
expected.add("function test() {");
expected.add("}");
assertEquals(expected.toString(), document.get());
}
}