/******************************************************************************* * 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.javascript.ast.Script; import org.eclipse.dltk.javascript.core.dom.Source; import org.eclipse.dltk.javascript.core.dom.rewrite.ASTConverter; import org.eclipse.dltk.javascript.core.dom.rewrite.RewriteAnalyzer; import org.eclipse.dltk.javascript.parser.JavaScriptParser; import org.eclipse.emf.ecore.change.ChangeDescription; import org.eclipse.emf.ecore.change.util.ChangeRecorder; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.text.edits.MalformedTreeException; import org.eclipse.text.edits.TextEdit; import junit.framework.TestCase; public abstract class AbstractRewriteTest extends TestCase { protected String rewrite(String input, Operation operation) { final Script script = new JavaScriptParser().parse(input, null); final ASTConverter converter = new ASTConverter(); final Source source = (Source) converter.visit(script); final ChangeRecorder recorder = new ChangeRecorder(source); operation.execute(source); final ChangeDescription cd = recorder.endRecording(); final RewriteAnalyzer rewrite = new RewriteAnalyzer(cd, input); rewrite.rewrite(source); cd.apply(); final Document document = new Document(input); try { rewrite.getEdit().apply(document, TextEdit.UPDATE_REGIONS); } catch (MalformedTreeException e) { throw new AssertionError(e); } catch (BadLocationException e) { throw new AssertionError(e); } return document.get(); } }