| /******************************************************************************* |
| * Copyright (c) 2012 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.core.tests.rewrite; |
| |
| import static java.lang.Integer.parseInt; |
| |
| import java.util.Iterator; |
| import java.util.concurrent.atomic.AtomicInteger; |
| |
| import org.eclipse.dltk.core.tests.util.StringList; |
| import org.eclipse.dltk.javascript.core.dom.NumericLiteral; |
| import org.eclipse.dltk.javascript.core.dom.Source; |
| import org.eclipse.dltk.javascript.core.dom.StringLiteral; |
| import org.eclipse.dltk.javascript.core.dom.VariableDeclaration; |
| import org.eclipse.emf.ecore.EObject; |
| |
| public class RewriteTest extends AbstractRewriteTest { |
| |
| public void testStringLiteral() { |
| final StringList code = new StringList(); |
| code.add("var lang = 'Java'"); |
| final AtomicInteger counter = new AtomicInteger(); |
| final String changed = rewrite(code.toString(), new Operation() { |
| @Override |
| public void execute(Source source) { |
| for (Iterator<EObject> i = source.eAllContents(); i.hasNext();) { |
| final EObject child = i.next(); |
| if (child instanceof StringLiteral) { |
| ((StringLiteral) child).setText("'JavaScript'"); |
| counter.incrementAndGet(); |
| } |
| } |
| } |
| }); |
| assertEquals(1, counter.intValue()); |
| final StringList expected = new StringList(); |
| expected.add("var lang = 'JavaScript'"); |
| assertEquals(expected.toString(), changed); |
| } |
| |
| public void testVariable() { |
| final AtomicInteger counter = new AtomicInteger(); |
| final String changed = rewrite("var year = 2012", new Operation() { |
| @Override |
| public void execute(Source source) { |
| for (Iterator<EObject> i = source.eAllContents(); i.hasNext();) { |
| final EObject child = i.next(); |
| if (child instanceof VariableDeclaration) { |
| final VariableDeclaration var = (VariableDeclaration) child; |
| var.getIdentifier().setName("YEAR"); |
| counter.incrementAndGet(); |
| } |
| } |
| } |
| }); |
| assertEquals(1, counter.intValue()); |
| assertEquals("var YEAR = 2012", changed); |
| } |
| |
| public void testNumericLiteral() { |
| final AtomicInteger counter = new AtomicInteger(); |
| final String changed = rewrite("var year = 2012", new Operation() { |
| @Override |
| public void execute(Source source) { |
| for (Iterator<EObject> i = source.eAllContents(); i.hasNext();) { |
| final EObject child = i.next(); |
| if (child instanceof NumericLiteral) { |
| final NumericLiteral num = (NumericLiteral) child; |
| num.setText(Integer.toString(parseInt(num.getText()) + 1)); |
| counter.incrementAndGet(); |
| } |
| } |
| } |
| }); |
| assertEquals(1, counter.intValue()); |
| assertEquals("var year = 2013", changed); |
| } |
| |
| } |