aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java334
1 files changed, 0 insertions, 334 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java
deleted file mode 100644
index 9565183bc..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/RefactoringTest.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Eclipse Public License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.eclipse.org/org/documents/epl-v10.php
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.ide.eclipse.adt.internal.editors.layout.refactoring;
-
-import static com.android.SdkConstants.ANDROID_WIDGET_PREFIX;
-import static com.android.SdkConstants.DOT_XML;
-
-import com.android.ide.common.rendering.api.ViewInfo;
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.editors.layout.gle2.CanvasViewInfo;
-import com.android.ide.eclipse.adt.internal.editors.layout.gle2.DomUtilities;
-import com.android.ide.eclipse.adt.internal.editors.layout.uimodel.UiViewElementNode;
-import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode;
-import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.TextEdit;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.w3c.dom.Element;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-@SuppressWarnings("restriction")
-public class RefactoringTest extends AdtProjectTest {
-
- protected boolean autoFormat() {
- return true;
- }
-
- @Override
- protected void setUp() throws Exception {
-
- // Ensure that the defaults are initialized so for example formatting options are
- // initialized properly
- IPreferenceStore store = AdtPlugin.getDefault().getPreferenceStore();
- AdtPrefs.init(store);
- AdtPrefs prefs = AdtPrefs.getPrefs();
- prefs.initializeStoreWithDefaults(store);
-
- store.setValue(AdtPrefs.PREFS_FORMAT_GUI_XML, autoFormat());
-
- prefs.loadValues(null);
-
- super.setUp();
- }
-
- protected static Element findElementById(Element root, String id) {
- if (id.equals(VisualRefactoring.getId(root))) {
- return root;
- }
-
- for (Element child : DomUtilities.getChildren(root)) {
- Element result = findElementById(child, id);
- if (result != null) {
- return result;
- }
- }
-
- return null;
- }
-
- protected static List<Element> getElements(Element root, String... ids) {
- List<Element> selectedElements = new ArrayList<Element>();
- for (String id : ids) {
- Element element = findElementById(root, id);
- assertNotNull(element);
- selectedElements.add(element);
- }
- return selectedElements;
- }
-
- protected void checkEdits(String basename, List<Change> changes) throws BadLocationException,
- IOException {
- IDocument document = new Document();
-
- String xml = readTestFile(basename, false);
- if (xml == null) { // New file
- xml = ""; //$NON-NLS-1$
- }
- document.set(xml);
-
- for (Change change : changes) {
- if (change instanceof TextFileChange) {
- TextFileChange tf = (TextFileChange) change;
- TextEdit edit = tf.getEdit();
- IFile file = tf.getFile();
- String contents = AdtPlugin.readFile(file);
- assertEquals(contents, xml);
- if (edit instanceof MultiTextEdit) {
- MultiTextEdit edits = (MultiTextEdit) edit;
- edits.apply(document);
- } else {
- edit.apply(document);
- }
- } else {
- System.out.println("Ignoring non-textfilechange in refactoring result");
- }
- }
-
- String actual = document.get();
-
- // Ensure that the document is still valid to make sure the edits don't
- // mangle it:
- org.w3c.dom.Document doc = DomUtilities.parseDocument(actual, true);
- assertNotNull(actual, doc);
-
- assertEqualsGolden(basename, actual);
- }
-
- protected void checkEdits(List<Change> changes,
- Map<IPath, String> fileToGoldenName) throws BadLocationException, IOException {
- checkEdits(changes, fileToGoldenName, false);
- }
-
- protected void checkEdits(List<Change> changes,
- Map<IPath, String> fileToGoldenName, boolean createDiffs)
- throws BadLocationException, IOException {
- for (Change change : changes) {
- if (change instanceof TextFileChange) {
- TextFileChange tf = (TextFileChange) change;
- IFile file = tf.getFile();
- assertNotNull(file);
- IPath path = file.getProjectRelativePath();
- String goldenName = fileToGoldenName.get(path);
- assertNotNull("Not found: " + path.toString(), goldenName);
-
- String xml = readTestFile(goldenName, false);
- if (xml == null) { // New file
- xml = ""; //$NON-NLS-1$
- }
- IDocument document = new Document();
- document.set(xml);
-
- String before = document.get();
-
- TextEdit edit = tf.getEdit();
- if (edit instanceof MultiTextEdit) {
- MultiTextEdit edits = (MultiTextEdit) edit;
- edits.apply(document);
- } else {
- edit.apply(document);
- }
-
- String actual = document.get();
-
- if (createDiffs) {
- // Use a diff as the golden file instead of the after
- actual = getDiff(before, actual);
- if (goldenName.endsWith(DOT_XML)) {
- goldenName = goldenName.substring(0,
- goldenName.length() - DOT_XML.length())
- + ".diff";
- }
- }
-
- assertEqualsGolden(goldenName, actual);
- } else {
- System.out.println("Ignoring non-textfilechange in refactoring result");
- assertNull(change.getAffectedObjects());
- }
- }
- }
-
- protected UiViewElementNode createModel(UiViewElementNode parent, Element element) {
- List<Element> children = DomUtilities.getChildren(element);
- String fqcn = ANDROID_WIDGET_PREFIX + element.getTagName();
- boolean hasChildren = children.size() > 0;
- UiViewElementNode node = createNode(parent, fqcn, hasChildren);
- node.setXmlNode(element);
- for (Element child : children) {
- createModel(node, child);
- }
-
- return node;
- }
-
- /**
- * Builds up a ViewInfo hierarchy for the given model. This is done by
- * reading .info dump files which record the exact pixel sizes of each
- * ViewInfo object. These files are assumed to match up exactly with the
- * model objects. This is done rather than rendering an actual layout
- * hierarchy to insulate the test from pixel difference (in say font size)
- * among platforms, as well as tying the test to particulars about relative
- * sizes of things which may change with theme adjustments etc.
- * <p>
- * Each file can be generated by the dump method in the ViewHierarchy.
- */
- protected ViewInfo createInfos(UiElementNode model, String relativePath) throws IOException {
- String basename = relativePath.substring(0, relativePath.lastIndexOf('.') + 1);
- String relative = basename + "info"; //$NON-NLS-1$
- String info = readTestFile(relative, true);
- // Parse the info file and build up a model from it
- // Each line contains a new info.
- // If indented it is a child of the parent.
- String[] lines = info.split("\n"); //$NON-NLS-1$
-
- // Iteration order for the info file should match exactly the UI model so
- // we can just advance the line index sequentially as we traverse
-
- return create(model, Arrays.asList(lines).iterator());
- }
-
- protected ViewInfo create(UiElementNode node, Iterator<String> lineIterator) {
- // android.widget.LinearLayout [0,36,240,320]
- Pattern pattern = Pattern.compile("(\\s*)(\\S+) \\[(\\d+),(\\d+),(\\d+),(\\d+)\\].*");
- assertTrue(lineIterator.hasNext());
- String description = lineIterator.next();
- Matcher matcher = pattern.matcher(description);
- assertTrue(matcher.matches());
- //String indent = matcher.group(1);
- //String fqcn = matcher.group(2);
- String left = matcher.group(3);
- String top = matcher.group(4);
- String right = matcher.group(5);
- String bottom = matcher.group(6);
-
- ViewInfo view = new ViewInfo(node.getXmlNode().getLocalName(), node,
- Integer.parseInt(left), Integer.parseInt(top),
- Integer.parseInt(right), Integer.parseInt(bottom));
-
- List<UiElementNode> childNodes = node.getUiChildren();
- if (childNodes.size() > 0) {
- List<ViewInfo> children = new ArrayList<ViewInfo>();
- for (UiElementNode child : childNodes) {
- children.add(create(child, lineIterator));
- }
- view.setChildren(children);
- }
-
- return view;
- }
-
- protected TestContext setupTestContext(IFile file, String relativePath) throws Exception {
- IStructuredModel structuredModel = null;
- org.w3c.dom.Document domDocument = null;
- IStructuredDocument structuredDocument = null;
- Element element = null;
-
- try {
- IModelManager modelManager = StructuredModelManager.getModelManager();
- structuredModel = modelManager.getModelForRead(file);
- if (structuredModel instanceof IDOMModel) {
- IDOMModel domModel = (IDOMModel) structuredModel;
- domDocument = domModel.getDocument();
- element = domDocument.getDocumentElement();
- structuredDocument = structuredModel.getStructuredDocument();
- }
- } finally {
- if (structuredModel != null) {
- structuredModel.releaseFromRead();
- }
- }
-
- assertNotNull(structuredModel);
- assertNotNull(domDocument);
- assertNotNull(element);
- assertNotNull(structuredDocument);
- assertTrue(element instanceof IndexedRegion);
-
- UiViewElementNode model = createModel(null, element);
- ViewInfo info = createInfos(model, relativePath);
- CanvasViewInfo rootView = CanvasViewInfo.create(info, true /* layoutlib5 */).getFirst();
- TestLayoutEditorDelegate layoutEditor =
- new TestLayoutEditorDelegate(file, structuredDocument, null);
-
- TestContext testInfo = createTestContext();
- testInfo.mFile = file;
- testInfo.mStructuredModel = structuredModel;
- testInfo.mStructuredDocument = structuredDocument;
- testInfo.mElement = element;
- testInfo.mDomDocument = domDocument;
- testInfo.mUiModel = model;
- testInfo.mViewInfo = info;
- testInfo.mRootView = rootView;
- testInfo.mLayoutEditorDelegate = layoutEditor;
-
- return testInfo;
- }
-
- protected TestContext createTestContext() {
- return new TestContext();
- }
-
- protected static class TestContext {
- protected IFile mFile;
- protected IStructuredModel mStructuredModel;
- protected IStructuredDocument mStructuredDocument;
- protected org.w3c.dom.Document mDomDocument;
- protected Element mElement;
- protected UiViewElementNode mUiModel;
- protected ViewInfo mViewInfo;
- protected CanvasViewInfo mRootView;
- protected TestLayoutEditorDelegate mLayoutEditorDelegate;
- }
-
- @Override
- public void testDummy() {
- // To avoid JUnit warning that this class contains no tests, even though
- // this is an abstract class and JUnit shouldn't try
- }
-}