Author: vpakan(a)redhat.com
Date: 2011-06-14 09:38:02 -0400 (Tue, 14 Jun 2011)
New Revision: 32088
Added:
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/smoke/CodeCompletionTest.java
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/ContentAssistHelper.java
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/JSFAllBotTests.java
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/OpenOnHelper.java
Log:
Added test for Content Assist functionality
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/JSFAllBotTests.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/JSFAllBotTests.java 2011-06-14
10:57:18 UTC (rev 32087)
+++
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/JSFAllBotTests.java 2011-06-14
13:38:02 UTC (rev 32088)
@@ -13,6 +13,7 @@
import org.jboss.tools.jsf.ui.bot.test.jsf2.refactor.JSF2MoveParticipantTest;
import org.jboss.tools.jsf.ui.bot.test.jsf2.refactor.JSF2RenameParticipantTest;
import org.jboss.tools.jsf.ui.bot.test.smoke.AddRemoveJSFCapabilitiesTest;
+import org.jboss.tools.jsf.ui.bot.test.smoke.CodeCompletionTest;
import org.jboss.tools.jsf.ui.bot.test.smoke.CreateNewJSFProjectTest;
import org.jboss.tools.jsf.ui.bot.test.smoke.OpenOnTest;
import org.jboss.tools.jsf.ui.bot.test.templates.SetTemplateForUnknownTagTest;
@@ -40,6 +41,7 @@
suite.addTestSuite(JSF2RenameParticipantTest.class);
suite.addTestSuite(JSF2AttributeRenameTest.class);
suite.addTestSuite(OpenOnTest.class);
+ suite.addTestSuite(CodeCompletionTest.class);
return suite;
}
}
\ No newline at end of file
Added:
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/smoke/CodeCompletionTest.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/smoke/CodeCompletionTest.java
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/smoke/CodeCompletionTest.java 2011-06-14
13:38:02 UTC (rev 32088)
@@ -0,0 +1,358 @@
+/*******************************************************************************
+ * Copyright (c) 2007-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,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.jsf.ui.bot.test.smoke;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jboss.tools.jsf.ui.bot.test.JSFAutoTestCase;
+import org.jboss.tools.ui.bot.ext.SWTJBTExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.helper.ContentAssistHelper;
+import org.jboss.tools.ui.bot.ext.parts.ContentAssistBot;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotEditorExt;
+/** * Test Code Completion functionality of JSF components within xhtml page
+ * @author Vladimir Pakan
+ *
+ */
+public class CodeCompletionTest extends JSFAutoTestCase{
+ private SWTBotEditorExt editor;
+ private String originalEditorText;
+ /**
+ * Test Code Completion functionality for managed bean
+ */
+ public void testCodeCompletionOfManagedBean(){
+
+ String textForSelection = "value=\"#{person.name}\"";
+ List<String> expectedProposals = new LinkedList<String>();
+ expectedProposals.add("msg");
+ expectedProposals.add("person : Person");
+ // Check content assist for #{ prefix
+ ContentAssistHelper.checkContentAssistContent(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textForSelection,
+ 9,
+ 0,
+ expectedProposals);
+ // Check content assist for ${msg. prefix
+ expectedProposals.clear();
+ expectedProposals.add("name : String - Person");
+ ContentAssistHelper.checkContentAssistContent(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textForSelection,
+ 16,
+ 0,
+ expectedProposals);
+ }
+ /**
+ * Test Code Completion functionality for resource
+ */
+ public void xxtestCodeCompletionOfResource(){
+
+ ContentAssistBot contentAssist = editor.contentAssist();
+ String textForSelection = "${msg.prompt}";
+ // Check content assist for ${ prefix
+ SWTJBTExt.selectTextInSourcePane(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textForSelection,
+ 2,
+ 0,
+ 0);
+ contentAssist.checkContentAssist("msg", false);
+ contentAssist.checkContentAssist("person : Person", false);
+ // Check content assist for ${msg. prefix
+ SWTJBTExt.selectTextInSourcePane(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textForSelection,
+ 6,
+ 0,
+ 0);
+ contentAssist.checkContentAssist("greeting", false);
+ contentAssist.checkContentAssist("prompt", false);
+ }
+ /**
+ * Test Code Completion functionality of <input> tag attributes within xhtml
page
+ */
+ public void xtestCodeCompletionOfInputTagAttributes(){
+
+ ContentAssistBot contentAssist = editor.contentAssist();
+ String textForSelection = "action=\"greeting\" value=\"Say
Hello\" ";
+ // Check content assist menu content
+ ContentAssistHelper.checkContentAssistContent(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textForSelection,
+ 36,
+ 0,
+ getInputTagProposalList());
+ // Check content assist insertion
+ String contentAssistToUse = "maxlength";
+ contentAssist.checkContentAssist(contentAssistToUse, true);
+ editor.save();
+ String expectedInsertedText = textForSelection + contentAssistToUse +
"=\"\"";
+ assertTrue("Editor has to contain text '" + expectedInsertedText +
"' but it doesn't\n" +
+ "Editor Text is\n" + editor.getText(),
+ editor.getText().contains(expectedInsertedText));
+
+ }
+ /**
+ * Test Code Completion functionality of <input> tag for jsfc attribute within
xhtml page
+ */
+ public void xtestCodeCompletionOfInputTagForJsfcAttribute(){
+ // check jsfc attribute insertion via Content Assist
+ SWTJBTExt.selectTextInSourcePane(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ "<input ",
+ 0,
+ 0,
+ 0);
+ String textToInsert = "<input />";
+ editor.insertText(textToInsert);
+ SWTJBTExt.selectTextInSourcePane(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ textToInsert,
+ 7,
+ 0,
+ 0);
+ String contentAssistToUse = "jsfc";
+ ContentAssistBot contentAssist = editor.contentAssist();
+ contentAssist.checkContentAssist(contentAssistToUse, true);
+ editor.save();
+ String expectedInsertedText = "<input " + contentAssistToUse +
"=\"\"";
+ assertTrue("Editor has to contain text '" + expectedInsertedText +
"' but it doesn't\n" +
+ "Editor Text is\n" + editor.getText(),
+ editor.getText().contains(expectedInsertedText));
+ // check jsfc attribute value Content Assist menu Content
+ ContentAssistHelper.checkContentAssistContent(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ expectedInsertedText,
+ 13,
+ 0,
+ getJsfcAttributeValueProposalList());
+ // check jsfc attribute value insertion via Content Assist
+ contentAssistToUse = "h:inputText";
+ contentAssist.checkContentAssist(contentAssistToUse, true);
+ expectedInsertedText = "<input jsfc=\"" + contentAssistToUse +
"\"";
+ assertTrue("Editor has to contain text '" + expectedInsertedText +
"' but it doesn't\n" +
+ "Editor Text is\n" + editor.getText(),
+ editor.getText().contains(expectedInsertedText));
+ editor.save();
+ // check Content Assist insertion of jsfc attribute attribute
+ ContentAssistHelper.checkContentAssistContent(SWTTestExt.bot,
+ FACELETS_TEST_PAGE,
+ expectedInsertedText,
+ 26,
+ 0,
+ getJsfcAttributeValueAttributesProposalList());
+ // check jsfc attribute value attribute insertion via Content Assist
+ String contentAssistAttributeToUse = "accept";
+ contentAssist.checkContentAssist(contentAssistAttributeToUse, true);
+ expectedInsertedText = "<input jsfc=\"" + contentAssistToUse +
"\" " + contentAssistAttributeToUse + "=\"\"";
+ assertTrue("Editor has to contain text '" + expectedInsertedText +
"' but it doesn't\n" +
+ "Editor Text is\n" + editor.getText(),
+ editor.getText().contains(expectedInsertedText));
+ editor.save();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ openPage(FACELETS_TEST_PAGE,FACELETS_TEST_PROJECT_NAME);
+ editor = SWTTestExt.bot.swtBotEditorExtByTitle(FACELETS_TEST_PAGE);
+ originalEditorText = editor.getText();
+ }
+ /**
+ * Returns list of expected Content Assist proposals for Input tag
+ * @return
+ */
+ private static List<String> getInputTagProposalList(){
+ LinkedList<String> result = new LinkedList<String>();
+
+ result.add("accept");
+ result.add("accesskey");
+ result.add("align=\"top\"");
+ result.add("alt");
+ result.add("checked=\"checked\"");
+ result.add("class");
+ result.add("dir=\"ltr\"");
+ result.add("disabled=\"disabled\"");
+ result.add("lang");
+ result.add("maxlength");
+ result.add("name");
+ result.add("onblur");
+ result.add("onchange");
+ result.add("onclick");
+ result.add("ondblclick");
+ result.add("onfocus");
+ result.add("onkeydown");
+ result.add("onkeypress");
+ result.add("onkeyup");
+ result.add("onmousedown");
+ result.add("onmousemove");
+ result.add("onmouseout");
+ result.add("onmouseover");
+ result.add("onmouseup");
+ result.add("onselect");
+ result.add("readonly=\"readonly\"");
+ result.add("size");
+ result.add("src");
+ result.add("style");
+ result.add("tabindex");
+ result.add("title");
+ result.add("usemap");
+ result.add("xml:lang");
+ result.add("actionListener");
+ result.add("binding");
+ result.add("image");
+ result.add("immediate");
+ result.add("label");
+ result.add("rendered");
+ result.add("styleClass");
+
+ return result;
+ }
+ /**
+ * Returns list of expected Content Assist proposals for Jsfc attribute value
+ * @return
+ */
+ private static List<String> getJsfcAttributeValueProposalList(){
+ LinkedList<String> result = new LinkedList<String>();
+
+ result.add("c:catch");
+ result.add("c:choose");
+ result.add("c:forEach");
+ result.add("c:forTokens");
+ result.add("c:if");
+ result.add("c:import");
+ result.add("c:otherwise");
+ result.add("c:out");
+ result.add("c:param");
+ result.add("c:redirect");
+ result.add("c:remove");
+ result.add("c:set");
+ result.add("c:url");
+ result.add("c:when");
+ result.add("f:actionListener");
+ result.add("f:attribute");
+ result.add("f:convertDateTime");
+ result.add("f:convertNumber");
+ result.add("f:converter");
+ result.add("f:facet");
+ result.add("f:loadBundle");
+ result.add("f:param");
+ result.add("f:phaseListener");
+ result.add("f:selectItem");
+ result.add("f:selectItems");
+ result.add("f:setPropertyActionListener");
+ result.add("f:subview");
+ result.add("f:validateDoubleRange");
+ result.add("f:validateLength");
+ result.add("f:validateLongRange");
+ result.add("f:validator");
+ result.add("f:valueChangeListener");
+ result.add("f:verbatim");
+ result.add("f:view");
+ result.add("h:column");
+ result.add("h:commandButton");
+ result.add("h:commandLink");
+ result.add("h:dataTable");
+ result.add("h:form");
+ result.add("h:graphicImage");
+ result.add("h:inputHidden");
+ result.add("h:inputSecret");
+ result.add("h:inputText");
+ result.add("h:inputTextarea");
+ result.add("h:message");
+ result.add("h:messages");
+ result.add("h:outputFormat");
+ result.add("h:outputLabel");
+ result.add("h:outputLink");
+ result.add("h:outputText");
+ result.add("h:panelGrid");
+ result.add("h:panelGroup");
+ result.add("h:selectBooleanCheckbox");
+ result.add("h:selectManyCheckbox");
+ result.add("h:selectManyListbox");
+ result.add("h:selectManyMenu");
+ result.add("h:selectOneListbox");
+ result.add("h:selectOneMenu");
+ result.add("h:selectOneRadio");
+ result.add("msg");
+ result.add("person : Person");
+ return result;
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (editor != null){
+ editor.setText(originalEditorText);
+ editor.saveAndClose();
+ }
+ super.tearDown();
+ }
+ /**
+ * Returns list of expected Content Assist proposals for Jsfc attribute value
attributes
+ * @return
+ */
+ private static List<String> getJsfcAttributeValueAttributesProposalList(){
+ LinkedList<String> result = new LinkedList<String>();
+
+ result.add("accept");
+ result.add("accesskey");
+ result.add("align=\"top\"");
+ result.add("alt");
+ result.add("checked=\"checked\"");
+ result.add("class");
+ result.add("dir=\"ltr\"");
+ result.add("disabled=\"disabled\"");
+ result.add("id");
+ result.add("lang");
+ result.add("maxlength");
+ result.add("name");
+ result.add("onblur");
+ result.add("onchange");
+ result.add("onclick");
+ result.add("ondblclick");
+ result.add("onfocus");
+ result.add("onkeydown");
+ result.add("onkeypress");
+ result.add("onkeyup");
+ result.add("onmousedown");
+ result.add("onmousemove");
+ result.add("onmouseout");
+ result.add("onmouseover");
+ result.add("onmouseup");
+ result.add("onselect");
+ result.add("readonly=\"readonly\"");
+ result.add("size");
+ result.add("src");
+ result.add("style");
+ result.add("tabindex");
+ result.add("title");
+ result.add("type=\"text\"");
+ result.add("usemap");
+ result.add("value");
+ result.add("xml:lang");
+ result.add("autocomplete");
+ result.add("binding");
+ result.add("converter");
+ result.add("converterMessage");
+ result.add("immediate");
+ result.add("label");
+ result.add("rendered");
+ result.add("required");
+ result.add("requiredMessage");
+ result.add("styleClass");
+ result.add("validator");
+ result.add("validatorMessage");
+ result.add("valueChangeListener");
+ return result;
+ }
+}
\ No newline at end of file
Property changes on:
trunk/jsf/tests/org.jboss.tools.jsf.ui.bot.test/src/org/jboss/tools/jsf/ui/bot/test/smoke/CodeCompletionTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/ContentAssistHelper.java
===================================================================
---
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/ContentAssistHelper.java
(rev 0)
+++
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/ContentAssistHelper.java 2011-06-14
13:38:02 UTC (rev 32088)
@@ -0,0 +1,130 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-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,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.ui.bot.ext.helper;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.Iterator;
+import java.util.List;
+import org.apache.log4j.Logger;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.jboss.tools.ui.bot.ext.SWTBotExt;
+import org.jboss.tools.ui.bot.ext.SWTJBTExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.parts.ContentAssistBot;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotEditorExt;
+
+/**
+ * Helper for Content Assist functionality testing
+ * @author Vladimir Pakan
+ *
+ */
+public class ContentAssistHelper {
+ protected static final Logger log = Logger.getLogger(ContentAssistHelper.class);
+ /**
+ * Checks Content Assist content on specified position within editor with editorTitle
+ * and checks if expectedProposalList is equal to current Proposal List
+ * @param editorTitle
+ * @param textToSelect
+ * @param selectionOffset
+ * @param selectionLength
+ * @param textToSelectIndex
+ * @param expectedProposalList
+ */
+ public static SWTBotEditor checkContentAssistContent(SWTBotExt bot,
+ String editorTitle, String textToSelect, int selectionOffset,
+ int selectionLength, int textToSelectIndex, List<String>
expectedProposalList) {
+
+ SWTJBTExt.selectTextInSourcePane(bot,
+ editorTitle, textToSelect, selectionOffset, selectionLength,
+ textToSelectIndex);
+
+ bot.sleep(Timing.time1S());
+
+ SWTBotEditorExt editor = SWTTestExt.bot.swtBotEditorExtByTitle(editorTitle);
+ ContentAssistBot contentAssist = editor.contentAssist();
+ List<String> currentProposalList = contentAssist.getProposalList();
+ assertTrue("Code Assist menu has incorrect menu items.\n" +
+ "Expected Proposal Menu Labels vs. Current Proposal Menu Labels :\n" +
+
ContentAssistHelper.getListsDiffFormatted(expectedProposalList,currentProposalList),
+ expectedProposalList.equals(currentProposalList));
+
+ return editor;
+
+ }
+
+ /**
+ * Checks Content Assist content on specified position within editor with editorTitle
+ * and checks if expectedProposalList is equal to current Proposal List
+ * @param editorTitle
+ * @param textToSelect
+ * @param selectionOffset
+ * @param selectionLength
+ * @param textToSelectIndex
+ * @param expectedProposalList
+ */
+ public static SWTBotEditor checkContentAssistContent(SWTBotExt bot,
+ String editorTitle, String textToSelect, int selectionOffset,
+ int selectionLength, List<String> expectedProposalList) {
+
+ return ContentAssistHelper.checkContentAssistContent(bot,
+ editorTitle,
+ textToSelect,
+ selectionOffset,
+ selectionLength,
+ 0,
+ expectedProposalList);
+
+ }
+ /**
+ * Get formatted difference between list0 and list1
+ * @param list0
+ * @param list1
+ * @return
+ */
+ private static String getListsDiffFormatted (List<String> list0 ,
List<String> list1){
+ StringBuffer sb = new StringBuffer("");
+ if (list0 == null && list1 == null){
+ sb.append("<null> == <null>");
+ }else if (list0 == null){
+ sb.append("<null> != <not null>");
+ }else if (list1 == null){
+ sb.append("<null> != <not null>");
+ } else{
+ Iterator<String> iterator0 = list0.iterator();
+ Iterator<String> iterator1 = list1.iterator();
+ boolean continueIteration = iterator0.hasNext() || iterator1.hasNext();
+ while (continueIteration){
+ String item0 = "<null>";
+ String item1 = "<null>";
+ sb.append(" ");
+ if (iterator0.hasNext()){
+ item0 = iterator0.next();
+ }
+ if (iterator1.hasNext()){
+ item1 = iterator1.next();
+ }
+ sb.append(" ");
+ sb.append(item0);
+ sb.append(item0.equals(item1) ? " == " : " != ");
+ sb.append(item1);
+ continueIteration = iterator0.hasNext() || iterator1.hasNext();
+ if (continueIteration){
+ sb.append("\n");
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+}
Property changes on:
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/ContentAssistHelper.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/OpenOnHelper.java
===================================================================
---
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/OpenOnHelper.java 2011-06-14
10:57:18 UTC (rev 32087)
+++
trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/helper/OpenOnHelper.java 2011-06-14
13:38:02 UTC (rev 32088)
@@ -40,32 +40,33 @@
* @param expectedOpenedFileName
*/
public static SWTBotEditor checkOpenOnFileIsOpened(SWTBotExt bot,
- String editorTitle, String textToSelect ,
- int selectionOffset , int selectionLength , int textToSelectIndex,
- String expectedOpenedFileName){
-
+ String editorTitle, String textToSelect, int selectionOffset,
+ int selectionLength, int textToSelectIndex, String expectedOpenedFileName) {
+
SWTBotEditor openedEditor = null;
-
- SWTBotEclipseEditor sourceEditor = SWTJBTExt.selectTextInSourcePane(bot, editorTitle,
textToSelect,
- selectionOffset, selectionLength, textToSelectIndex);
-
- bot.sleep(Timing.time1S());
-
- sourceEditor.setFocus();
-
- bot.sleep(Timing.time1S());
-
- KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_F3);
-
- bot.sleep(Timing.time3S());
-
- openedEditor = bot.activeEditor();
-
- assertTrue("Opened file has to have title " + expectedOpenedFileName +
" but has " + openedEditor.getTitle(),
- openedEditor.getTitle().equalsIgnoreCase(expectedOpenedFileName));
-
- return openedEditor;
-
+
+ SWTBotEclipseEditor sourceEditor = SWTJBTExt.selectTextInSourcePane(bot,
+ editorTitle, textToSelect, selectionOffset, selectionLength,
+ textToSelectIndex);
+
+ bot.sleep(Timing.time1S());
+
+ sourceEditor.setFocus();
+
+ bot.sleep(Timing.time1S());
+
+ KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_F3);
+
+ bot.sleep(Timing.time3S());
+
+ openedEditor = bot.activeEditor();
+
+ assertTrue("Opened file has to have title " + expectedOpenedFileName
+ + " but has " + openedEditor.getTitle(), openedEditor.getTitle()
+ .equalsIgnoreCase(expectedOpenedFileName));
+
+ return openedEditor;
+
}
}