//This product is provided under the terms of EPL (Eclipse Public License) //version 1.0. // //The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.swingui.fileinput.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; import org.dtangler.core.dependencyengine.DependencyEngine; import org.dtangler.core.dependencyengine.DependencyEngineFactory; import org.dtangler.core.dependencyengine.MockDependencyEngine; import org.dtangler.swingui.fileinput.FileInputSelection; import org.dtangler.swingui.fileinput.FileInputSelector; import org.dtangler.swingui.textinput.MockTextInputSelector; import org.dtangler.swingui.windowmanager.MockWindowManager; import org.junit.Before; import org.junit.Test; public class FileInputSelectorFeatureTest { private MockDirectorySelector directorySelector; private MockTextInputSelector textInputSelector; private MockWindowManager windowManager; private FileInputSelector selector; private FileInputSelection defaultInput; private DependencyEngine dependencyEngine; @Before public void setUp() { directorySelector = new MockDirectorySelector(); textInputSelector = new MockTextInputSelector(); windowManager = new MockWindowManager(); dependencyEngine = new MockDependencyEngine(); dependencyEngine.setDependencyEngineId("defaultDependencyEngine"); DependencyEngine anotherDependencyEngine = new MockDependencyEngine(); anotherDependencyEngine.setDependencyEngineId("anotherDependencyEngine"); DependencyEngineFactory dependencyEngineFactory = new DependencyEngineFactory(dependencyEngine, anotherDependencyEngine); selector = new FileInputSelectorImpl(directorySelector, textInputSelector, windowManager, dependencyEngineFactory); defaultInput = new FileInputSelection(dependencyEngine.getDependencyEngineId(), Arrays.asList("mypath1", "mypath1/mypath2"), Arrays.asList("*foo*", "*bar*")); } @Test public void testDefaultValues() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); assertTrue(view.engineCombo.contentEquals(new String[] {"defaultDependencyEngine", "anotherDependencyEngine"}).isTrue()); assertTrue(view.paths.contentEquals( new String[] { "mypath1", "mypath1/mypath2" }).isTrue()); assertTrue(view.masks.contentEquals(new String[] { "*foo*", "*bar*" }) .isTrue()); } @Test public void testAddAndRemovePaths() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); directorySelector.setNextValue("mypath3"); view.addPathButton.click(); assertTrue(view.paths.contentEquals( new String[] { "mypath1", "mypath1/mypath2", "mypath3" }) .isTrue()); view.paths.selectIndices(new int[] { 0, 2 }); view.removePathButton.click(); assertTrue(view.paths.contentEquals(new String[] { "mypath1/mypath2" }) .isTrue()); directorySelector.setNextValue(null); assertTrue(view.paths.contentEquals(new String[] { "mypath1/mypath2" }) .isTrue()); directorySelector.setNextValue("mypath1/mypath2"); assertTrue(view.paths.contentEquals(new String[] { "mypath1/mypath2" }) .isTrue()); } @Test public void testAddAndRemoveMasks() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); textInputSelector.setNextValue("*bay*"); view.addMaskButton.click(); assertTrue(view.masks.contentEquals( new String[] { "*foo*", "*bar*", "*bay*" }).isTrue()); view.masks.selectIndices(new int[] { 0, 2 }); view.removeMaskButton.click(); assertTrue(view.masks.contentEquals(new String[] { "*bar*" }).isTrue()); textInputSelector.setNextValue(null); assertTrue(view.masks.contentEquals(new String[] { "*bar*" }).isTrue()); textInputSelector.setNextValue("*bar*"); assertTrue(view.masks.contentEquals(new String[] { "*bar*" }).isTrue()); } @Test public void testRemoveMaskIsEnabledOnlyWhenAtleastOnePathSelected() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); assertFalse(view.removePathButton.isEnabled().isTrue()); view.paths.selectIndex(0); assertTrue(view.removePathButton.isEnabled().isTrue()); } @Test public void testRemoveMaskIsEnabledOnlyWhenAtleastOneMaskSelected() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); assertFalse(view.removeMaskButton.isEnabled().isTrue()); view.masks.selectIndex(0); assertTrue(view.removeMaskButton.isEnabled().isTrue()); } @Test public void testOkIsEnabledOnlyWhenAtleastOnePathSelected() { selector.selectInput(defaultInput); FileInputViewDriver view = new FileInputViewDriver(windowManager .getLastShownView()); assertTrue(view.okButton.isEnabled().isTrue()); view.paths.selectIndices(new int[] { 0, 1 }); view.removePathButton.click(); assertFalse(view.okButton.isEnabled().isTrue()); directorySelector.setNextValue("some value"); view.addPathButton.click(); view.masks.selectIndices(new int[] { 0, 1 }); view.removeMaskButton.click(); assertTrue(view.okButton.isEnabled().isTrue()); } @Test public void testOk() { windowManager.setTestCodeForNextModal(new Runnable() { public void run() { FileInputViewDriver view = new FileInputViewDriver( windowManager.getLastShownView()); view.engineCombo.select("anotherDependencyEngine"); view.masks.selectIndices(new int[] { 0, 1 }); directorySelector.setNextValue("some path"); view.addPathButton.click(); textInputSelector.setNextValue("some mask"); view.addMaskButton.click(); view.okButton.click(); } }); FileInputSelection result = selector.selectInput(defaultInput); assertEquals(Arrays.asList("mypath1", "mypath1/mypath2", "some path"), result.getPaths()); assertEquals(Arrays.asList("*foo*", "*bar*", "some mask"), result .getIgnoredFileMasks()); assertTrue("anotherDependencyEngine".equals(result.getEngine())); assertNull("window was closed", windowManager.getLastShownView()); } @Test public void testCancel() { windowManager.setTestCodeForNextModal(new Runnable() { public void run() { FileInputViewDriver view = new FileInputViewDriver( windowManager.getLastShownView()); view.masks.selectIndices(new int[] { 0, 1 }); directorySelector.setNextValue("some path"); view.addPathButton.click(); textInputSelector.setNextValue("some mask"); view.addMaskButton.click(); view.cancelButton.click(); } }); FileInputSelection result = selector.selectInput(defaultInput); assertNull(result); assertNull("window was closed", windowManager.getLastShownView()); } }