Author: scabanovich
Date: 2011-05-23 16:27:12 -0400 (Mon, 23 May 2011)
New Revision: 31434
Removed:
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/TestUtil.java
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/META-INF/MANIFEST.MF
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/ContentAssistantTestCase.java
Log:
JBIDE-8983
https://issues.jboss.org/browse/JBIDE-8983
Modified: trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/META-INF/MANIFEST.MF
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/META-INF/MANIFEST.MF 2011-05-23
20:25:53 UTC (rev 31433)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/META-INF/MANIFEST.MF 2011-05-23
20:27:12 UTC (rev 31434)
@@ -10,6 +10,7 @@
org.jboss.tools.common,
org.jboss.tools.common.el.core,
org.jboss.tools.common.model.ui,
+ org.jboss.tools.common.text.xml,
org.jboss.tools.cdi.core,
org.jboss.tools.cdi.core.test,
org.jboss.tools.cdi.seam.config.core,
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/ContentAssistantTestCase.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/ContentAssistantTestCase.java 2011-05-23
20:25:53 UTC (rev 31433)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/ContentAssistantTestCase.java 2011-05-23
20:27:12 UTC (rev 31434)
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Copyright (c) 2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
@@ -11,238 +11,34 @@
package org.jboss.tools.cdi.seam.config.ui.test;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistant;
-import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
import org.jboss.tools.common.editor.ObjectMultiPageEditor;
import org.jboss.tools.common.model.ui.editor.EditorPartWrapper;
-import org.jboss.tools.common.text.ext.util.Utils;
-import org.jboss.tools.test.util.WorkbenchUtils;
+import
org.jboss.tools.common.text.xml.contentassist.test.AbstractContentAssistantTestCase;
-//copied from ContentAssistantTestCase - they should have common super class
-public class ContentAssistantTestCase extends TestCase {
- protected IProject project = null;
- protected IEditorPart editor = null;
- protected StructuredTextEditor jspTextEditor = null;
- protected StructuredTextViewer viewer = null;
- protected IContentAssistant contentAssistant = null;
- protected IDocument document = null;
+public class ContentAssistantTestCase extends AbstractContentAssistantTestCase {
- public void openEditor(String fileName) {
- IEditorPart editorPart = WorkbenchUtils.openEditor(project.getName()+"/"+
fileName); //$NON-NLS-1$
- editor = editorPart;
-
-//getting editor start
+ protected void obtainTextEditor(IEditorPart editorPart) {
if(editorPart instanceof EditorPartWrapper) {
editorPart = ((EditorPartWrapper)editorPart).getEditor();
}
if (editorPart instanceof ObjectMultiPageEditor) {
- jspTextEditor = ((ObjectMultiPageEditor) editorPart).getSourceEditor();
+ textEditor = ((ObjectMultiPageEditor) editorPart).getSourceEditor();
} else if (editorPart instanceof StructuredTextEditor) {
- jspTextEditor = (StructuredTextEditor)editorPart;
+ textEditor = (StructuredTextEditor)editorPart;
}
// clean deffered events
while (Display.getCurrent().readAndDispatch());
-
-//getting editor end.
-
- viewer = jspTextEditor.getTextViewer();
- document = viewer.getDocument();
- SourceViewerConfiguration config = TestUtil
- .getSourceViewerConfiguration(jspTextEditor);
- contentAssistant = (config == null ? null : config
- .getContentAssistant(viewer));
-
- assertTrue(
- "Cannot get the Content Assistant instance for the editor for page \""
//$NON-NLS-1$
- + fileName + "\"", (contentAssistant != null)); //$NON-NLS-1$
-
- assertTrue("The IDocument is not instance of IStructuredDocument for page
\"" //$NON-NLS-1$
- + fileName + "\"", //$NON-NLS-1$
- (document instanceof IStructuredDocument));
-
}
- public ICompletionProposal[] checkProposals(String fileName, int offset, String[]
proposals, boolean exactly) {
- return checkProposals(fileName, null, offset, proposals, exactly, true);
- }
-
- public ICompletionProposal[] checkProposals(String fileName, String substring, int
offset, String[] proposals, boolean exactly) {
- return checkProposals(fileName, substring, offset, proposals, exactly, false);
+ protected boolean isRelevantProposal(ICompletionProposal proposal) {
+ return (proposal instanceof CustomCompletionProposal)
+ && (proposal.getClass() != CustomCompletionProposal.class);
}
- public ICompletionProposal[] checkProposals(String fileName, String substring, int
offset, String[] proposals, boolean exactly, boolean excludeELProposalsFromExactTest){
- openEditor(fileName);
- int position = 0;
- if (substring != null) {
- String documentContent = document.get();
- position = documentContent.indexOf(substring);
- }
-
- List<ICompletionProposal> res = TestUtil.collectProposals(contentAssistant,
viewer, position+offset);
-
- assertTrue("Content Assistant returned no proposals", (res != null
&& res.size() > 0)); //$NON-NLS-1$
-
- // for (int i = 0; i < result.length; i++) {
- // System.out.println("proposal - "+result[i].getDisplayString());
- // }
-
- ICompletionProposal[] result = res.toArray(new ICompletionProposal[res.size()]);
- int foundCounter = 0;
- for (int i = 0; i < proposals.length; i++) {
- boolean found = compareProposal(proposals[i], result);
- if (found)
- foundCounter++;
- assertTrue("Proposal " + proposals[i] + " not found!",
found ); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- if (exactly) {
- if (excludeELProposalsFromExactTest) {
- assertTrue("Some other proposals were found!", foundCounter ==
proposals.length); //$NON-NLS-1$
- } else {
- assertTrue("Some other proposals were found!", result.length ==
proposals.length); //$NON-NLS-1$
- }
- }
-
-// System.out.println("checkProposals <<< Exiting");
- return result;
- }
-
- //CustomCompletionProposal instead of AutoContentAssistantProposal
- public boolean compareProposal(String proposalName, ICompletionProposal[] proposals){
- for (int i = 0; i < proposals.length; i++) {
- if (proposals[i] instanceof CustomCompletionProposal) {
- CustomCompletionProposal ap = (CustomCompletionProposal)proposals[i];
-
- if(proposals[i].getClass() == CustomCompletionProposal.class) {
- //It is wtp's proposal - ignore it.
- continue;
- }
-
- String replacementString = ap.getReplacementString().toLowerCase();
- if (replacementString.equalsIgnoreCase(proposalName)) return true;
-
-
- // For a tag proposal there will be not only the the tag name but all others
characters like default attributes, tag ending characters and so on
- if (replacementString.indexOf("/>") != -1) {
- replacementString = replacementString.substring(0,
replacementString.indexOf("/>"));
- }
- if (replacementString.indexOf('>') != -1) {
- replacementString = replacementString.substring(0,
replacementString.indexOf('>'));
- }
- if (replacementString.equalsIgnoreCase(proposalName)) return true;
-
- String[] replacementStringParts = replacementString.split(" ");
//$NON-NLS-1$
- if (replacementStringParts != null && replacementStringParts.length > 0)
{
- if (replacementStringParts[0].equalsIgnoreCase(proposalName)) return true;
- }
-
- // for an attribute proposal there will be a pare of attribute-value (i.e.
attrName="attrValue")
- replacementStringParts = replacementString.split("="); //$NON-NLS-1$
- if (replacementStringParts != null && replacementStringParts.length > 0)
{
- if (replacementStringParts[0].equalsIgnoreCase(proposalName)) return true;
- }
-
- // for an Unclosed EL the closing character is appended to the proposal string (i.e.
person} )
- // perform case sensitive compare operation
- replacementStringParts = replacementString.split("}"); //$NON-NLS-1$
- if (replacementStringParts != null && replacementStringParts.length > 0)
{
- if (replacementStringParts[0].equals(proposalName)) return true;
- }
-
- // For an attribute value proposal there will be the quote characters
- replacementString = Utils.trimQuotes(replacementString);
- if (replacementString.equalsIgnoreCase(proposalName)) return true;
-
- } else {
- if(proposals[i].getDisplayString().toLowerCase().equals(proposalName.toLowerCase()))
return true;
- }
- }
- return false;
- }
-
- public void closeEditor() {
- if (editor != null) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getActivePage().closeEditor(editor, false);
- editor = null;
- }
- }
-
- /**
- * @return the project
- */
- public IProject getProject() {
- return project;
- }
-
- /**
- * @param project the project to set
- */
- public void setProject(IProject project) {
- this.project = project;
- }
-
- /**
- * @return the jspTextEditor
- */
- public StructuredTextEditor getTextEditor() {
- return jspTextEditor;
- }
-
- /**
- * @return the viewer
- */
- public StructuredTextViewer getViewer() {
- return viewer;
- }
-
- /**
- * @param viewer the viewer to set
- */
- public void setViewer(StructuredTextViewer viewer) {
- this.viewer = viewer;
- }
-
- /**
- * @return the contentAssistant
- */
- public IContentAssistant getContentAssistant() {
- return contentAssistant;
- }
-
- /**
- * @param contentAssistant the contentAssistant to set
- */
- public void setContentAssistant(IContentAssistant contentAssistant) {
- this.contentAssistant = contentAssistant;
- }
-
- /**
- * @return the document
- */
- public IDocument getDocument() {
- return document;
- }
-
- /**
- * @param document the document to set
- */
- public void setDocument(IDocument document) {
- this.document = document;
- }
}
\ No newline at end of file
Deleted:
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/TestUtil.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/TestUtil.java 2011-05-23
20:25:53 UTC (rev 31433)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.config.ui.test/src/org/jboss/tools/cdi/seam/config/ui/test/TestUtil.java 2011-05-23
20:27:12 UTC (rev 31434)
@@ -1,144 +0,0 @@
-package org.jboss.tools.cdi.seam.config.ui.test;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.TextUtilities;
-import org.eclipse.jface.text.contentassist.ContentAssistant;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContentAssistant;
-import org.eclipse.jface.text.contentassist.IContentAssistantExtension;
-import org.eclipse.jface.text.source.SourceViewerConfiguration;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.wst.sse.ui.internal.contentassist.StructuredContentAssistant;
-import org.jboss.tools.common.text.xml.contentassist.ProposalSorter;
-
-//copied from org.jboss.tools.jst.jsp.test.TestUtil
-//TODO remove this class and move original to common
-public class TestUtil {
-
- /** The Constant MAX_IDLE. */
- public static final long MAX_IDLE = 5*60*1000L;
-
- /**
- * Returns the CA Processor from content assistant for the given offset in the
document.
- *
- *
- * @param viewer
- * @param offset
- * @param ca
- */
-
- public static IContentAssistProcessor getProcessor(ITextViewer viewer, int offset,
IContentAssistant ca) {
- try {
- IDocument document= viewer.getDocument();
- String type= TextUtilities.getContentType(document,
((IContentAssistantExtension)ca).getDocumentPartitioning(), offset, true);
- return ca.getContentAssistProcessor(type);
- } catch (BadLocationException x) {
- }
-
- return null;
- }
-
- /**
- * Process UI input but do not return for the specified time interval.
- *
- * @param waitTimeMillis
- * the number of milliseconds
- */
- public static void delay(long waitTimeMillis) {
- Display display = Display.getCurrent();
-
- // If this is the UI thread,
- // then process input.
- if (display != null) {
- long endTimeMillis = System.currentTimeMillis() + waitTimeMillis;
- while (System.currentTimeMillis() < endTimeMillis) {
- if (!display.readAndDispatch())
- display.sleep();
- }
- display.update();
- }
- // Otherwise, perform a simple sleep.
- else {
- try {
- Thread.sleep(waitTimeMillis);
- } catch (InterruptedException e) {
- // Ignored.
- }
- }
- }
-
- /**
- * Wait for idle.
- */
- public static void waitForIdle(long maxIdle) {
- long start = System.currentTimeMillis();
- while (!Job.getJobManager().isIdle()) {
- delay(500);
- if ( (System.currentTimeMillis()-start) > maxIdle )
- throw new RuntimeException("A long running task detected"); //$NON-NLS-1$
- }
- }
-
- public static SourceViewerConfiguration getSourceViewerConfiguration(AbstractTextEditor
editor) {
- Class editorClass = editor.getClass();
- while (editorClass != null) {
- try {
- Method m = editorClass.getDeclaredMethod("getSourceViewerConfiguration",
new Class[] {});
-
- if(m != null) {
- m.setAccessible(true);
- Object result = m.invoke(editor, new Object[]{});
- return (result instanceof SourceViewerConfiguration ?
(SourceViewerConfiguration)result : null);
- }
- } catch (NoSuchMethodException ne) {
- } catch (Exception e) {
- }
- editorClass = editorClass.getSuperclass();
- }
- return null;
-
- }
-
- public static void prepareCAInvokation(IContentAssistant ca, ITextViewer viewer, int
offset) {
- if (ca == null || viewer == null)
- return;
-
- // sets cursor position
- viewer.getTextWidget().setCaretOffset(offset);
-
- TestUtil.waitForIdle(TestUtil.MAX_IDLE);
- TestUtil.delay(1000);
-
- ca.showPossibleCompletions();
- }
-
- public static int MAX_CATEGORIES_COUNT = 10;
- public static List<ICompletionProposal> collectProposals(IContentAssistant ca,
ITextViewer viewer, int offset) {
- prepareCAInvokation(ca, viewer, offset);
-
- final IContentAssistProcessor p= TestUtil.getProcessor(viewer, offset, ca);
- List<ICompletionProposal> res= new ArrayList<ICompletionProposal>();
- // Try to acquire all the proposal categories assuming that there are less than 10 or
equal
- for (int i = 0; i < MAX_CATEGORIES_COUNT && p != null; i++) {
- ICompletionProposal[] result= p.computeCompletionProposals(viewer, offset);
- for (int j = 0; result != null && j < result.length; j++) {
- res.add(result[j]);
- }
- }
- return ProposalSorter.filterAndSortProposals(res, null, null);
- }
-
-}