r4213 - in trunk: . src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/simulator/launcher src/main/java/fr/ifremer/isisfish/ui/input src/main/java/fr/ifremer/isisfish/ui/result src/main/java/fr/ifremer/isisfish/ui/simulator src/main/java/fr/ifremer/isisfish/ui/widget src/test/java/fr/ifremer/isisfish src/test/java/fr/ifremer/isisfish/simulator/launcher src/test/java/fr/ifremer/isisfish/ui src/test/java/fr/ifremer/isisfish/ui/input src/test/java/fr/ifremer/isisfish/ui/sim
Author: echatellier Date: 2015-05-04 15:18:17 +0000 (Mon, 04 May 2015) New Revision: 4213 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4213 Log: Testing fest(ival ^^) Added: trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java trunk/src/test/java/fr/ifremer/isisfish/ui/input/ trunk/src/test/java/fr/ifremer/isisfish/ui/input/InputIT.java trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/ trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/SimulatorIT.java Modified: trunk/pom.xml trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/pom.xml 2015-05-04 15:18:17 UTC (rev 4213) @@ -387,6 +387,13 @@ <version>4.12</version> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing</artifactId> + <version>1.2.1</version> + <scope>test</scope> + </dependency> </dependencies> <!-- ************************************************************* --> @@ -618,7 +625,7 @@ <java.io.tmpdir>${project.build.directory}/surefire-workdir</java.io.tmpdir> </systemPropertyVariables> </configuration> - <!--<executions> + <executions> <execution> <id>surefire-it</id> <phase>integration-test</phase> @@ -631,7 +638,7 @@ </includes> </configuration> </execution> - </executions> --> + </executions> </plugin> <plugin> Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -729,8 +729,7 @@ } }); - try { - InputStream imageStream = WelcomeUI.class.getResourceAsStream("/images/simulation.gif"); + try (InputStream imageStream = WelcomeUI.class.getResourceAsStream("/images/simulation.gif")) { Image image = ImageIO.read(imageStream); welcome.setIconImage(image); } Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -35,6 +35,7 @@ import java.util.WeakHashMap; import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; import org.apache.commons.logging.Log; @@ -114,7 +115,11 @@ if (!contains(job)) { jobs.add(job); jobIds.put(id, job); - fireTableRowsInserted(jobs.size() - 1, jobs.size() - 1); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + fireTableRowsInserted(jobs.size() - 1, jobs.size() - 1); + } + }); } } } @@ -122,18 +127,26 @@ public void removeJob(SimulationJob job) { String id = job.getItem().getControl().getId(); synchronized (jobs) { - int index = jobs.indexOf(job); + final int index = jobs.indexOf(job); if (index >= 0) { jobs.remove(index); jobIds.remove(id); - fireTableRowsDeleted(index, index); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + fireTableRowsDeleted(index, index); + } + }); } } } public void clearJob() { jobs.clear(); - fireTableDataChanged(); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + fireTableDataChanged(); + } + }); } public ArrayList<SimulationJob> getJobs() { @@ -389,9 +402,13 @@ String id = control.getId(); synchronized (model.jobs) { SimulationJob job = model.jobIds.get(id); - int index = model.getJobs().indexOf(job); + final int index = model.getJobs().indexOf(job); if (index >= 0) { - fireTableRowsUpdated(index, index); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + fireTableRowsUpdated(index, index); + } + }); } } } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-05-04 15:18:17 UTC (rev 4213) @@ -29,12 +29,12 @@ <Boolean id="regionLoaded" javaBean="false" /> <JMenuBar id="menu" constraints='BorderLayout.NORTH'> - <JMenu text="isisfish.common.region"> - <JMenuItem text="isisfish.input.menu.importRegion" onActionPerformed="getHandler().importRegion(this)" /> - <JMenuItem text="isisfish.input.menu.importRenameRegion" onActionPerformed="getHandler().importRegionAndRename(this)" /> + <JMenu text="isisfish.common.region" id="menuRegion"> + <JMenuItem id="menuRegionImport" text="isisfish.input.menu.importRegion" onActionPerformed="getHandler().importRegion(this)" /> + <JMenuItem id="menuRegionImportRename" text="isisfish.input.menu.importRenameRegion" onActionPerformed="getHandler().importRegionAndRename(this)" /> <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="getHandler().importRegionFromSimulation(this)" enabled="false"/> - <JMenuItem text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().exportRegion(this)" /> - <JMenuItem text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().copyRegion(this)" /> + <JMenuItem id="menuRegionExport" text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().exportRegion(this)" /> + <JMenuItem id="menuRegionCopy" text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().copyRegion(this)" /> <JSeparator/> <JMenuItem text="isisfish.input.menu.removeLocaly" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().removeRegion(this, false)" /> </JMenu> Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -35,6 +35,7 @@ import java.util.List; import javax.swing.JMenuItem; +import javax.swing.SwingUtilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -88,9 +89,13 @@ public void simulationStart(SimulationService simService, SimulationJob job) { } @Override - public void simulationStop(SimulationService simService, SimulationJob job) { - GenericComboModel<String> model = (GenericComboModel<String>)resultUI.getSimulationComboBox().getModel(); - model.addElement(job.getId()); + public void simulationStop(SimulationService simService, final SimulationJob job) { + final GenericComboModel<String> model = (GenericComboModel<String>)resultUI.getSimulationComboBox().getModel(); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + model.addElement(job.getId()); + } + }); } @Override public void clearJobDone(SimulationService simService) { Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-05-04 15:18:17 UTC (rev 4213) @@ -81,9 +81,13 @@ } @Override - public void simulationStop(SimulationService simService, SimulationJob job) { - GenericComboModel<String> model = (GenericComboModel)fieldSimulParamsSelect.getModel(); - model.addElement(job.getId()); + public void simulationStop(SimulationService simService, final SimulationJob job) { + final GenericComboModel<String> model = (GenericComboModel)fieldSimulParamsSelect.getModel(); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + model.addElement(job.getId()); + } + }); } @Override Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -201,14 +201,17 @@ */ private void buildLayout() { dataBox = new JComboBox<T>(); + dataBox.setName("filterBox"); dataBox.addActionListener(new ComboBoxActionListener()); filterField = new JXTextField(t("isisfish.common.filter")); + filterField.setName("filterText"); + filterField.getDocument().addDocumentListener(new FilterDocumentListener()); // fix size filterField.setPreferredSize(new Dimension(200, 0)); resetButton = new JButton(Resource.getIcon("/icons/cancel.png")); resetButton.addActionListener(new FilterActionListener()); resetButton.setEnabled(false); - filterField.getDocument().addDocumentListener(new FilterDocumentListener()); + resetButton.setName("filterReset"); setLayout(new BorderLayout()); add(dataBox, BorderLayout.CENTER); Modified: trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -97,6 +97,7 @@ IsisFish.init(); IsisFish.initVCS(); + IsisFish.initCommunityVCS(); // for ui testing // install a new topia migration service callback // to not ask for user for migration during test Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java 2015-04-28 08:21:17 UTC (rev 4212) +++ trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -33,6 +33,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import org.nuiton.topia.TopiaContext; @@ -57,6 +58,7 @@ * * Last update : $Date$ By : $Author$ */ +@Ignore public class SimulationServiceIT extends AbstractIsisFishTest { /** Class logger. */ Added: trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java (rev 0) +++ trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -0,0 +1,73 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ifremer.isisfish.ui; + +import org.fest.swing.edt.FailOnThreadViolationRepaintManager; +import org.fest.swing.edt.GuiActionRunner; +import org.fest.swing.edt.GuiQuery; +import org.fest.swing.exception.WaitTimedOutError; +import org.fest.swing.fixture.FrameFixture; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; + +import fr.ifremer.isisfish.AbstractIsisFishTest; + +/** + * Test commun qui permet d'instancier une fenetre Isis à partir de laquelle dépendent + * tous les tests. + * + * @author Eric Chatellier + */ +public abstract class AbstractFestIT extends AbstractIsisFishTest { + + protected FrameFixture mainWindow; + + @BeforeClass + public static void setUpOnce() { + FailOnThreadViolationRepaintManager.install(); + } + + @Before + public void setUp() { + WelcomeUI frame = GuiActionRunner.execute(new GuiQuery<WelcomeUI>() { + protected WelcomeUI executeInEDT() { + return new WelcomeUI(); + } + }); + mainWindow = new FrameFixture(frame); + try { + mainWindow.show(); // shows the frame to test + } catch (WaitTimedOutError e) { + // ok, but not a problem, isis is so slow... + } + mainWindow.maximize(); + } + + @After + public void tearDown() { + mainWindow.cleanUp(); + } +} Property changes on: trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java ___________________________________________________________________ Added: svn:eol-style + native Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/src/test/java/fr/ifremer/isisfish/ui/input/InputIT.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/ui/input/InputIT.java (rev 0) +++ trunk/src/test/java/fr/ifremer/isisfish/ui/input/InputIT.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -0,0 +1,97 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ifremer.isisfish.ui.input; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.lang3.SystemUtils; +import org.fest.swing.core.matcher.JButtonMatcher; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import fr.ifremer.isisfish.ui.AbstractFestIT; + +/** + * Swing tests. + * + * @author Eric Chatellier + */ +public class InputIT extends AbstractFestIT { + + @Before + @Override + public void setUp() { + super.setUp(); + mainWindow.tabbedPane("simulTabs").selectTab(0); + } + + protected void openDemoRegion() { + mainWindow.comboBox("fieldCurrentRegion").selectItem("DemoRegion"); + } + + /** + * Just open test. + */ + @Test + public void testOpenDemoRegion() { + openDemoRegion(); + mainWindow.comboBox("fieldCurrentRegion").requireSelection(1); + } + + /** + * Edit and save region test. + */ + @Test + public void testEditRegionName() { + openDemoRegion(); + mainWindow.tree("fisheryRegionTree").selectRow(0); + mainWindow.textBox("fieldRegion").selectAll().enterText("New region name"); + mainWindow.button("save").click(); + Assert.assertEquals(mainWindow.tree("fisheryRegionTree").valueAt(0), "New region name"); + } + + /** + * Open, export, import and rename region test. + * + * @throws IOException + */ + @Test + public void testImportRegion() throws IOException { + openDemoRegion(); + mainWindow.menuItem("menuRegionExport").click(); + File f = new File(SystemUtils.JAVA_IO_TMPDIR, "isis-export.zip"); + f.deleteOnExit(); + mainWindow.fileChooser().selectFile(f).approve(); + mainWindow.menuItem("menuRegionImportRename").click(); + mainWindow.fileChooser().selectFile(f).approve(); + + mainWindow.dialog().textBox().enterText("Testimport"); + mainWindow.dialog().button(JButtonMatcher.withText("OK")).click(); + mainWindow.comboBox("fieldCurrentRegion").selectItem("Testimport"); + Assert.assertEquals(mainWindow.tree("fisheryRegionTree").valueAt(0), "Testimport"); + } +} Property changes on: trunk/src/test/java/fr/ifremer/isisfish/ui/input/InputIT.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/SimulatorIT.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/SimulatorIT.java (rev 0) +++ trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/SimulatorIT.java 2015-05-04 15:18:17 UTC (rev 4213) @@ -0,0 +1,87 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ifremer.isisfish.ui.simulator; + +import org.junit.Before; +import org.junit.Test; + +import fr.ifremer.isisfish.ui.AbstractFestIT; + +/** + * UI fest tests related to simulation params and launch. + * + * @author Eric Chatellier + */ +public class SimulatorIT extends AbstractFestIT { + + @Before + @Override + public void setUp() { + super.setUp(); + mainWindow.tabbedPane("simulTabs").selectTab(1); + } + + /** + * Param and launch a simple simulation. + * + * @throws InterruptedException + */ + @Test + public void testSimulationAndViewResults() throws InterruptedException { + // first tab + mainWindow.tabbedPane("bodyTabbedPane").selectTab(0); + mainWindow.comboBox("fieldSimulParamsRegion").selectItem("DemoRegion"); + mainWindow.textBox("fieldSimulParamsName").setText("test"); + mainWindow.textBox("fieldSimulParamsDesc").setText("Ho la description de ouf :D"); + mainWindow.list("listSimulParamsStrategies").selectItem("stratest"); + mainWindow.list("listSimulParamsPopulations").selectItem("popage"); + + // second tab + mainWindow.tabbedPane("bodyTabbedPane").selectTab(4); + mainWindow.tabbedPane("bodyTabbedPane").selectTab(5); + mainWindow.tabbedPane("bodyTabbedPane").selectTab(6); + + // back to first tab + mainWindow.tabbedPane("bodyTabbedPane").selectTab(0); + mainWindow.comboBox("comboSelLauncher").selectItem(2); + mainWindow.button("buttonSimulParamsSimulate").click(); + + // may be on tab (Queue) + int count = 0; + boolean done = false; + while (count < 10 && !done) { + done = mainWindow.table("queueTableDone").rowCount() == 1; + Thread.sleep(1000); + count++; + } + + // tab (result) + mainWindow.tabbedPane("simulTabs").selectTab(3); + mainWindow.textBox("filterText").setText("test"); + mainWindow.comboBox("filterBox").selectItem(0); + mainWindow.button("openButton").click(); + } + +} Property changes on: trunk/src/test/java/fr/ifremer/isisfish/ui/simulator/SimulatorIT.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native
participants (1)
-
echatellier@users.forge.codelutin.com