/*******************************************************************************
* Copyright (c) 2012 NumberFour AG
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* NumberFour AG - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.core.tests.rewrite;
import org.eclipse.dltk.core.tests.util.StringList;
import org.eclipse.dltk.javascript.core.dom.Source;
import org.eclipse.dltk.javascript.core.dom.VariableStatement;
import org.eclipse.emf.ecore.util.EcoreUtil;
public class VariableRemoveTest extends AbstractRewriteTest {
public void testNOP() {
final StringList code = new StringList();
code.add("var a = 1");
code.add("var b = 2");
code.add("var c = 3");
assertEquals(code.toString(), rewrite(code.toString(), new Operation() {
@Override
public void execute(Source source) {
}
}));
}
public void testRemoveStatement() {
final StringList code = new StringList();
code.add("var a = 1");
code.add("var b = 2");
code.add("var c = 3");
final String output = rewrite(code.toString(), new Operation() {
@Override
public void execute(Source source) {
assertEquals(3, source.getStatements().size());
EcoreUtil.remove(source.getStatements().get(1));
}
});
code.remove(1);
assertEquals(code.toString(), output);
}
public void testRemoveStatementWithJsdocs() {
final StringList code = new StringList();
code.add("/** @type {Number} */");
code.add("var n");
code.add("/** @type {String} */");
code.add("var s");
code.add("/** @type {Date} */");
code.add("var d");
final String output = rewrite(code.toString(), new Operation() {
@Override
public void execute(Source source) {
assertEquals(3, source.getStatements().size());
EcoreUtil.remove(source.getStatements().get(1));
}
});
code.remove(3); // var s
code.remove(2); // @type String
assertEquals(code.toString(), output);
}
public void testRemoveVariableWithJsdocs() {
final StringList code = new StringList();
code.add("var ");
code.add("/** @type {Number} */ n,");
code.add("/** @type {String} */ s,");
code.add("/** @type {Date} */ d");
final String output = rewrite(code.toString(), new Operation() {
@Override
public void execute(Source source) {
assertEquals(1, source.getStatements().size());
final VariableStatement statement = (VariableStatement) source
.getStatements().get(0);
EcoreUtil.remove(statement.getDeclarations().get(1));
}
});
code.remove(2); // @type String s
assertEquals(code.toString(), output);
}
public void testRemoveOnlyVariableStatement() {
final StringList code = new StringList();
code.add("/** @type {Number} */");
code.add("var n");
final String output = rewrite(code.toString(), new Operation() {
@Override
public void execute(Source source) {
assertEquals(1, source.getStatements().size());
EcoreUtil.remove(source.getStatements().get(0));
}
});
assertEquals("\n", output);
}
}