From 98e7d4e9005dac984170c776419e5757227ac883 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 18 Mar 2019 10:51:26 +0100 Subject: [PATCH] unit tests for CopyPastePlugin --- .../cdplugin/copypaste/CopyPastePlugin.java | 63 ++++++++++------- .../cdplugin/copypaste/CopyPluginAction.java | 18 +++-- .../cdplugin/copypaste/PastePluginAction.java | 18 +++-- .../mapviewer/cdplugin/CdPluginFunctions.java | 33 ++++++++- .../cdplugin/copypaste/AllCopyPasteTests.java | 1 + .../copypaste/CopyPastePluginTest.java | 67 +++++++++++++++++++ 6 files changed, 162 insertions(+), 38 deletions(-) create mode 100644 CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java index c9a139cf0d..f46d33752d 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java @@ -41,12 +41,12 @@ public class CopyPastePlugin extends CellDesignerPlugin { /** * Paste action. */ - private PastePluginAction ppa; + private PastePluginAction pastePluginAction; /** * Paste action. */ - private CopyPluginAction cpa; + private CopyPluginAction copyPluginAction; /** * Default constructor. Creates menu and InfoFrame. @@ -58,38 +58,42 @@ public class CopyPastePlugin extends CellDesignerPlugin { win = MainWindow.getLastInstance(); - ppa = new PastePluginAction(this, win); - cpa = new CopyPluginAction(this, win); + pastePluginAction = new PastePluginAction(this, win); + copyPluginAction = new CopyPluginAction(this, win); // create keyboard listener for shortcuts - KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { - public boolean dispatchKeyEvent(KeyEvent e) { - switch (e.getID()) { - case KeyEvent.KEY_PRESSED: - if (e.getKeyCode() == java.awt.event.KeyEvent.VK_V - && e.isControlDown() - && e.isAltDown()) { - ppa.myActionPerformed(null); - return true; - } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_C - && e.isControlDown() - && e.isAltDown()) { - cpa.myActionPerformed(null); - return true; - } else { - return false; - } - default: - return false; - } - } - }); + KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(createKeyEventDispatcher()); } catch (Exception exception) { logger.error(exception, exception); } } + protected KeyEventDispatcher createKeyEventDispatcher() { + return new KeyEventDispatcher() { + public boolean dispatchKeyEvent(KeyEvent e) { + switch (e.getID()) { + case KeyEvent.KEY_PRESSED: + if (e.getKeyCode() == java.awt.event.KeyEvent.VK_V + && e.isControlDown() + && e.isAltDown()) { + getPastePluginAction().myActionPerformed(null); + return true; + } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_C + && e.isControlDown() + && e.isAltDown()) { + getCopyPluginAction().myActionPerformed(null); + return true; + } else { + return false; + } + default: + return false; + } + } + }; + } + // CHECKSTYLE:OFF @Override public void SBaseAdded(PluginSBase arg0) { @@ -126,4 +130,11 @@ public class CopyPastePlugin extends CellDesignerPlugin { } + protected CopyPluginAction getCopyPluginAction() { + return copyPluginAction; + } + + protected PastePluginAction getPastePluginAction() { + return pastePluginAction; + } } \ No newline at end of file diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java index 136e273525..1e4df5508a 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java @@ -30,29 +30,37 @@ public class CopyPluginAction extends PluginAction { /** * Plugin that access this action. */ - private CopyPastePlugin plug = null; + private CopyPastePlugin plugin = null; /** * Default constructor. * * @param plugin - * {@link #plug} + * {@link #plugin} * @param win * {@link #window} */ public CopyPluginAction(CopyPastePlugin plugin, MainWindow win) { - this.plug = plugin; + this.plugin = plugin; } @Override public void myActionPerformed(ActionEvent e) { try { CopyAction annotateAction = new CopyAction(); - PluginListOf list = plug.getSelectedAllNode(); - annotateAction.performAnnotation(plug, list); + PluginListOf list = getPlugin().getSelectedAllNode(); + annotateAction.performAnnotation(getPlugin(), list); } catch (Exception ex) { logger.error(ex, ex); } } + protected CopyPastePlugin getPlugin() { + return plugin; + } + + protected void setPlugin(CopyPastePlugin plugin) { + this.plugin = plugin; + } + } \ No newline at end of file diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java index 97a9187efe..83cb961f68 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java @@ -28,29 +28,37 @@ public class PastePluginAction extends PluginAction { /** * Plugin that access this action. */ - private CopyPastePlugin plug = null; + private CopyPastePlugin plugin = null; /** * Default constructor. * * @param plugin - * {@link #plug} + * {@link #plugin} * @param win * {@link #window} */ public PastePluginAction(CopyPastePlugin plugin, MainWindow win) { - this.plug = plugin; + this.setPlugin(plugin); } @Override public void myActionPerformed(ActionEvent e) { try { PasteAction annotateAction = new PasteAction(); - PluginListOf list = plug.getSelectedAllNode(); - annotateAction.performAnnotation(plug, list); + PluginListOf list = getPlugin().getSelectedAllNode(); + annotateAction.performAnnotation(plugin, list); } catch (Exception ex) { logger.error(ex, ex); } } + protected CopyPastePlugin getPlugin() { + return plugin; + } + + protected void setPlugin(CopyPastePlugin plugin) { + this.plugin = plugin; + } + } \ No newline at end of file diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java index 89ae014dcb..381af8d102 100644 --- a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java @@ -1,11 +1,18 @@ package lcsb.mapviewer.cdplugin; +import java.util.List; + +import org.apache.log4j.Logger; +import org.apache.log4j.spi.LoggingEvent; +import org.junit.After; +import org.junit.Before; import org.mockito.Mockito; import jp.sbi.celldesigner.plugin.PluginListOf; import jp.sbi.celldesigner.plugin.PluginReaction; import jp.sbi.celldesigner.plugin.PluginSpecies; import jp.sbi.celldesigner.plugin.PluginSpeciesAlias; +import lcsb.mapviewer.common.EventStorageLoggerAppender; public class CdPluginFunctions { @@ -20,8 +27,30 @@ public class CdPluginFunctions { "</rdf:Description>\n" + "</rdf:RDF>\n"; - public CdPluginFunctions() { - super(); + private EventStorageLoggerAppender appender; + + @Before + public final void _setUp() throws Exception { + Logger.getRootLogger().removeAppender(appender); + appender = new EventStorageLoggerAppender(false); + Logger.getRootLogger().addAppender(appender); + } + + @After + public final void _tearDown() throws Exception { + Logger.getRootLogger().removeAppender(appender); + } + + protected List<LoggingEvent> getWarnings() { + return appender.getWarnings(); + } + + protected List<LoggingEvent> getErrors() { + return appender.getErrors(); + } + + protected List<LoggingEvent> getFatals() { + return appender.getFatals(); } protected PluginListOf createPluginListWithSpecies(int size) { diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java index c1bf57ac73..4592dfdabc 100644 --- a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java @@ -7,6 +7,7 @@ import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({ CopyActionTest.class, CopyPasteAbstractActionTest.class, + CopyPastePluginTest.class, PasteActionTest.class, }) public class AllCopyPasteTests { diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java new file mode 100644 index 0000000000..ddde8a7350 --- /dev/null +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java @@ -0,0 +1,67 @@ +package lcsb.mapviewer.cdplugin.copypaste; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.mockito.Mockito.when; + +import java.awt.event.KeyEvent; + +import org.junit.Test; +import org.mockito.Mockito; + +import jp.sbi.celldesigner.plugin.PluginListOf; +import lcsb.mapviewer.cdplugin.CdPluginFunctions; +import lcsb.mapviewer.common.SystemClipboard; + +public class CopyPastePluginTest extends CdPluginFunctions { + + SystemClipboard cp = new SystemClipboard(); + + @Test + public void testConstructor() { + new CopyPastePlugin(); + assertEquals(0, getErrors().size()); + } + + @Test + public void testCopyAction() { + String data = cp.getClipboardContents(); + + CopyPastePlugin plugin = new CopyPastePlugin(); + KeyEvent event = Mockito.mock(KeyEvent.class); + when(event.getID()).thenReturn(KeyEvent.KEY_PRESSED); + when(event.getKeyCode()).thenReturn(java.awt.event.KeyEvent.VK_C); + when(event.isControlDown()).thenReturn(true); + when(event.isAltDown()).thenReturn(true); + + CopyPastePlugin copyPastePlugin = Mockito.mock(CopyPastePlugin.class); + PluginListOf list = createPluginListWithSpecies(1); + when(copyPastePlugin.getSelectedAllNode()).thenReturn(list); + plugin.getCopyPluginAction().setPlugin(copyPastePlugin); + + plugin.createKeyEventDispatcher().dispatchKeyEvent(event); + + String newData = cp.getClipboardContents(); + + assertNotEquals("Data in clipboard didn't change", data, newData); + + } + + @Test + public void testPasteAction() { + CopyPastePlugin plugin = new CopyPastePlugin(); + KeyEvent event = Mockito.mock(KeyEvent.class); + when(event.getID()).thenReturn(KeyEvent.KEY_PRESSED); + when(event.getKeyCode()).thenReturn(java.awt.event.KeyEvent.VK_V); + when(event.isControlDown()).thenReturn(true); + when(event.isAltDown()).thenReturn(true); + + CopyPastePlugin copyPastePlugin = Mockito.mock(CopyPastePlugin.class); + PluginListOf list = createPluginListWithSpecies(1); + when(copyPastePlugin.getSelectedAllNode()).thenReturn(list); + plugin.getPastePluginAction().setPlugin(copyPastePlugin); + + plugin.createKeyEventDispatcher().dispatchKeyEvent(event); + } + +} -- GitLab