PageRenderTime 54ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/bundles/plugins-trunk/XML/test/xml/gui/VFSFileListTest.java

#
Java | 279 lines | 195 code | 59 blank | 25 comment | 0 complexity | 886ab468841af9ad29787b8dff878cce MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. /*
  2. * VFSFileListTest.java
  3. * :folding=explicit:collapseFolds=1:
  4. *
  5. * Copyright (C) 2010 Eric Le Lay
  6. *
  7. * The XML plugin is licensed under the GNU General Public License, with
  8. * the following exception:
  9. *
  10. * "Permission is granted to link this code with software released under
  11. * the Apache license version 1.1, for example used by the Xerces XML
  12. * parser package."
  13. */
  14. package xml.gui;
  15. // {{{ jUnit imports
  16. import java.util.concurrent.TimeUnit;
  17. import org.junit.*;
  18. import static org.junit.Assert.*;
  19. import static org.junit.Assume.*;
  20. import org.fest.swing.fixture.*;
  21. import org.fest.swing.core.*;
  22. import org.fest.swing.data.TableCell;
  23. import org.fest.swing.finder.*;
  24. import org.fest.swing.edt.*;
  25. import org.fest.swing.timing.*;
  26. import org.fest.swing.core.matcher.JButtonMatcher;
  27. import static org.fest.assertions.Assertions.*;
  28. import org.gjt.sp.jedit.testframework.Log;
  29. import static org.gjt.sp.jedit.testframework.TestUtils.*;
  30. import static org.gjt.sp.jedit.testframework.EBFixture.*;
  31. import org.gjt.sp.jedit.testframework.PluginOptionsFixture;
  32. import org.gjt.sp.jedit.testframework.TestUtils;
  33. // }}}
  34. import org.gjt.sp.jedit.jEdit;
  35. import org.gjt.sp.jedit.EBMessage;
  36. import org.gjt.sp.jedit.textarea.JEditTextArea;
  37. import org.gjt.sp.jedit.Buffer;
  38. import java.io.*;
  39. import java.util.regex.Pattern;
  40. import javax.swing.text.*;
  41. import javax.swing.*;
  42. import java.awt.event.KeyEvent;
  43. import java.awt.event.InputEvent;
  44. import org.gjt.sp.jedit.gui.CompletionPopup;
  45. /**
  46. * unit tests for VFSFileList
  47. * $Id: VFSFileListTest.java 21325 2012-03-11 11:03:44Z kerik-sf $
  48. */
  49. public class VFSFileListTest{
  50. private static File testData;
  51. @BeforeClass
  52. public static void setUpjEdit() throws IOException{
  53. TestUtils.beforeClass();
  54. testData = new File(System.getProperty("test_data")).getCanonicalFile();
  55. assertTrue(testData.exists());
  56. }
  57. @AfterClass
  58. public static void tearDownjEdit() {
  59. TestUtils.afterClass();
  60. }
  61. @Test
  62. public void testEnabledDisabled() throws IOException{
  63. final VFSFileList selector = new VFSFileList(view(),"xml.translate.xml-inputs");
  64. selector.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
  65. final FrameFixture frame = new FrameFixture(TestUtils.robot(),Containers.frameFor(selector));
  66. frame.show();
  67. frame.list("xml.translate.xml-inputs").requireEnabled();
  68. frame.button("xml.translate.xml-inputs.add").requireEnabled();
  69. GuiActionRunner.execute(new GuiTask(){
  70. protected void executeInEDT(){
  71. selector.setEnabled(false);
  72. }
  73. });
  74. frame.list("xml.translate.xml-inputs").requireDisabled();
  75. frame.button("xml.translate.xml-inputs.add").requireDisabled();
  76. GuiActionRunner.execute(new GuiTask(){
  77. protected void executeInEDT(){
  78. selector.setEnabled(true);
  79. }
  80. });
  81. frame.list("xml.translate.xml-inputs").requireEnabled();
  82. frame.button("xml.translate.xml-inputs.add").requireEnabled();
  83. frame.close();
  84. }
  85. @Test
  86. public void testAPI() throws IOException{
  87. final File f = new File(testData, "simple/actions.xml");
  88. final VFSFileList selector = new VFSFileList(view(),"xml.translate.xml-inputs");
  89. selector.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
  90. final FrameFixture frame = new FrameFixture(TestUtils.robot(),Containers.frameFor(selector));
  91. frame.show();
  92. assertFalse(selector.itemsExist());
  93. assertEquals(0,selector.getItemCount());
  94. assertNull(selector.getSelectedItem());
  95. GuiActionRunner.execute(new GuiTask(){
  96. protected void executeInEDT(){
  97. selector.setItems(new String[]{f.getPath()});
  98. }
  99. });
  100. assertThat(frame.list("xml.translate.xml-inputs").contents()).containsOnly(f.getPath());
  101. assertTrue(selector.itemsExist());
  102. assertEquals(1,selector.getItemCount());
  103. assertThat(frame.list("xml.translate.xml-inputs").contents()).isEqualTo(selector.getItems());
  104. assertNull(selector.getSelectedItem());
  105. try{
  106. selector.getItem(2);
  107. fail("Should throw an IllegalArgumentException");
  108. }catch(IllegalArgumentException e){
  109. //pass
  110. }
  111. try{
  112. selector.getItem(-1);
  113. fail("Should throw an IllegalArgumentException");
  114. }catch(IllegalArgumentException e){
  115. //pass
  116. }
  117. frame.close();
  118. }
  119. @Test
  120. public void testOpenFile(){
  121. final File f = new File(testData, "simple/actions.xml");
  122. final VFSFileList selector = new VFSFileList(view(),"xml.translate.xml-inputs");
  123. selector.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
  124. assumeTrue(!view().getBuffer().getPath().equals(f.getPath()));
  125. final FrameFixture frame = new FrameFixture(TestUtils.robot(),Containers.frameFor(selector));
  126. frame.show();
  127. GuiActionRunner.execute(new GuiTask(){
  128. protected void executeInEDT(){
  129. selector.setItems(new String[]{f.getPath()});
  130. }
  131. });
  132. frame.list("xml.translate.xml-inputs").selectItem(0);
  133. frame.list("xml.translate.xml-inputs").showPopupMenu().menuItemWithPath("Open file").click();
  134. assertEquals(f.getPath(),view().getBuffer().getPath());
  135. frame.close();
  136. jEdit.closeBuffer(view(),view().getBuffer());
  137. }
  138. @Test
  139. public void testAddRemove(){
  140. final File xml = new File(testData, "simple/actions.xml");
  141. File xsd = new File(testData, "simple/actions.xsd");
  142. final VFSFileList selector = new VFSFileList(view(),"xml.translate.xml-inputs");
  143. selector.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
  144. final FrameFixture frame = new FrameFixture(TestUtils.robot(),Containers.frameFor(selector));
  145. frame.show();
  146. GuiActionRunner.execute(new GuiTask(){
  147. protected void executeInEDT(){
  148. selector.setItems(new String[]{xml.getPath()});
  149. }
  150. });
  151. frame.list("xml.translate.xml-inputs").showPopupMenu().menuItemWithPath("Add").click();
  152. DialogFixture browseDialog = findDialogByTitle("File Browser - Open");
  153. Pause.pause(1000);
  154. browseDialog.button("up").click();
  155. Pause.pause(1000);
  156. browseDialog.table("file").cell(
  157. browseDialog.table("file").cell(xsd.getParentFile().getName())).doubleClick();
  158. Pause.pause(1000);
  159. browseDialog.table("file").selectCell(
  160. browseDialog.table("file").cell(xsd.getName()));
  161. browseDialog.button("ok").click();
  162. assertThat(frame.list("xml.translate.xml-inputs").contents()).contains(xsd.getPath());
  163. frame.list("xml.translate.xml-inputs").selectItem(0);
  164. frame.button("xml.translate.xml-inputs.add").click();
  165. browseDialog = findDialogByTitle("File Browser - Open");
  166. Pause.pause(1000);
  167. browseDialog.button("up").click();
  168. Pause.pause(1000);
  169. browseDialog.table("file").cell(
  170. browseDialog.table("file").cell(xml.getParentFile().getName())).doubleClick();
  171. Pause.pause(1000);
  172. browseDialog.table("file").selectCell(
  173. browseDialog.table("file").cell(xml.getName()));
  174. browseDialog.button("ok").click();
  175. assertThat(frame.list("xml.translate.xml-inputs").contents()).contains(xml.getPath());
  176. assertEquals(3,frame.list("xml.translate.xml-inputs").contents().length);
  177. frame.list("xml.translate.xml-inputs").selectItem(0);
  178. frame.button("xml.translate.xml-inputs.remove").requireEnabled();
  179. frame.button("xml.translate.xml-inputs.remove").click();
  180. frame.button("xml.translate.xml-inputs.remove").click();
  181. frame.button("xml.translate.xml-inputs.remove").click();
  182. frame.button("xml.translate.xml-inputs.remove").requireDisabled();
  183. frame.close();
  184. jEdit.closeBuffer(view(),view().getBuffer());
  185. }
  186. @Test
  187. public void testUpDown(){
  188. final File f = new File(testData, "simple/actions.xml");
  189. final File xsd = new File(testData, "simple/actions.xsd");
  190. final VFSFileList selector = new VFSFileList(view(),"xml.translate.xml-inputs");
  191. selector.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
  192. final FrameFixture frame = new FrameFixture(TestUtils.robot(),Containers.frameFor(selector));
  193. frame.show();
  194. frame.button("xml.translate.xml-inputs.up").requireDisabled();
  195. frame.button("xml.translate.xml-inputs.down").requireDisabled();
  196. GuiActionRunner.execute(new GuiTask(){
  197. protected void executeInEDT(){
  198. selector.setItems(new String[]{f.getPath(),xsd.getPath()});
  199. }
  200. });
  201. //no selection
  202. frame.button("xml.translate.xml-inputs.up").requireDisabled();
  203. frame.button("xml.translate.xml-inputs.down").requireDisabled();
  204. // selected last item
  205. frame.list("xml.translate.xml-inputs").selectItem(1);
  206. frame.button("xml.translate.xml-inputs.up").requireEnabled();
  207. frame.button("xml.translate.xml-inputs.down").requireDisabled();
  208. // move it on top
  209. frame.button("xml.translate.xml-inputs.up").click();
  210. assertEquals(xsd.getPath(),selector.getItem(0));
  211. assertEquals(f.getPath(),selector.getItem(1));
  212. frame.button("xml.translate.xml-inputs.up").requireDisabled();
  213. frame.button("xml.translate.xml-inputs.down").requireEnabled();
  214. // move it down
  215. frame.button("xml.translate.xml-inputs.down").click();
  216. assertEquals(f.getPath(),selector.getItem(0));
  217. assertEquals(xsd.getPath(),selector.getItem(1));
  218. frame.button("xml.translate.xml-inputs.down").requireDisabled();
  219. }
  220. }