This is an automated email from the ASF dual-hosted git repository. mbien pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 47b064fb7c moved TaskTest to JUnit4 Added test new tests to cover uncovered functionality. new daefbd50ad Merge pull request #4112 from lbownik/openide.util.task 47b064fb7c is described below commit 47b064fb7c6a0e0d9865d564f88fbb4763a3b0d7 Author: Lukasz Bownik <lukasz.bow...@gmail.com> AuthorDate: Thu May 12 23:34:10 2022 +0200 moved TaskTest to JUnit4 Added test new tests to cover uncovered functionality. --- .../test/unit/src/org/openide/util/TaskTest.java | 196 +++++++++++++++++++-- 1 file changed, 181 insertions(+), 15 deletions(-) diff --git a/platform/openide.util/test/unit/src/org/openide/util/TaskTest.java b/platform/openide.util/test/unit/src/org/openide/util/TaskTest.java index c45953edb3..cc5a9d1398 100644 --- a/platform/openide.util/test/unit/src/org/openide/util/TaskTest.java +++ b/platform/openide.util/test/unit/src/org/openide/util/TaskTest.java @@ -21,25 +21,186 @@ package org.openide.util; import java.util.logging.Level; import java.util.logging.Logger; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import org.junit.Test; import org.netbeans.junit.Log; -import org.netbeans.junit.NbTestCase; -import org.openide.util.Exceptions; -import org.openide.util.Task; +import static java.lang.System.nanoTime; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import org.junit.Ignore; -public class TaskTest extends NbTestCase { - private Logger LOG; - public TaskTest(String testName) { - super(testName); +public class TaskTest { + private final static long tenMiliseconds = 10000000; // in nanosecods + + private static final Logger LOG = Logger.getLogger("org.openide.util.TaskTest"); + + private volatile boolean runHasBeenExecuted = false; + private volatile Task executedListenerTask = null; + + //-------------------------------------------------------------------------- + private static void assertFinished(final Task task) { + + assertTrue(task.isFinished()); + } + + //-------------------------------------------------------------------------- + private static void assertWaitFinishedReturnsImmediately(final Task task) { + + final long begin = nanoTime(); + task.waitFinished(); + final long duration = nanoTime() - begin; + + assertTrue("The Task.waitFinished() took longer than 10 miliseconds. " + + "This is not neseserily a bug.", duration < tenMiliseconds); } - @Override - protected void setUp() throws Exception { - LOG = Logger.getLogger("org.openide.util.Task." + getName()); + //-------------------------------------------------------------------------- + private static void assertWaitFinishedWithTimeoutReturnsImmediately(final Task task) + throws Exception { + + final long begin = nanoTime(); + task.waitFinished(0); + final long duration = nanoTime()- begin; + + assertTrue("The Task.waitFinished(long) took longer than milisecond. " + + "This is not neseserily a bug.", duration < tenMiliseconds); + } + + //-------------------------------------------------------------------------- + @Test + public void emptyTask_isImmediatelyFinished_andNeverWaits() + throws Exception { + + assertFinished(Task.EMPTY); + assertWaitFinishedReturnsImmediately(Task.EMPTY); + assertWaitFinishedWithTimeoutReturnsImmediately(Task.EMPTY); + assertEquals("task null", Task.EMPTY.toString()); + assertEquals("null", Task.EMPTY.debug()); + + Task empty = new Task(null); + assertFinished(empty); + assertWaitFinishedReturnsImmediately(empty); + assertWaitFinishedWithTimeoutReturnsImmediately(empty); + assertEquals("task null", empty.toString()); + assertEquals("null", empty.debug()); } + //-------------------------------------------------------------------------- + @Test + public void runningEmptyTask_doesNothing() { + + try { + Task.EMPTY.run(); + } catch (final NullPointerException e) { + fail("NullPointerException shall never happen."); + } + } + + //-------------------------------------------------------------------------- + @Test + public void runningTask_executesRunnableAndListeners() { + + this.runHasBeenExecuted = false; + this.executedListenerTask = null; + + Task task = new Task(() -> { + this.runHasBeenExecuted = true; + }); + task.addTaskListener((t) -> { + this.executedListenerTask = t; + }); + + assertFalse(task.isFinished()); + assertNotEquals("null", task.debug()); + + task.run(); + + assertTrue(this.runHasBeenExecuted); + assertSame(task, this.executedListenerTask); + assertTrue(task.isFinished()); + } + + //-------------------------------------------------------------------------- + @Test + public void runningTask_doesNotRunRemovedListeners() { + + this.executedListenerTask = null; + TaskListener listener = (t) -> { + this.executedListenerTask = t; + }; + + Task task = new Task(() -> { + }); + task.addTaskListener(listener); + task.removeTaskListener(listener); + + task.run(); + + assertTrue(task.isFinished()); + assertNull(this.executedListenerTask); + } + + //-------------------------------------------------------------------------- + @Test + public void finishedTask_executesAddedListenerImmediately() { + + this.executedListenerTask = null; + + Task task = new Task(() -> { + }); + task.run(); + + assertNull(this.executedListenerTask); + assertTrue(task.isFinished()); + + task.addTaskListener((t) -> { + this.executedListenerTask = t; + }); + + assertSame(task, this.executedListenerTask); + assertTrue(task.isFinished()); // still finished + } + //-------------------------------------------------------------------------- + @Ignore("Current implementation allows null listener but then Task.run throws NPE :(") + @Test + public void addTaskListener_throwsNullPointer_whenGivenNullArgument() { + + Task task = new Task(() -> { + }); + try { + task.addTaskListener(null); + fail(); + } catch (NullPointerException e) { + //good + } + } + + //-------------------------------------------------------------------------- + @Test + public void removeTaskListener_doesNothing_whenGivenNullArgument() { + + this.executedListenerTask = null; + + TaskListener listener = (t) -> { + this.executedListenerTask = t; + }; + + Task task = new Task(() -> { + }); + task.addTaskListener(listener); + task.removeTaskListener(null); + task.run(); + + assertSame(task, this.executedListenerTask); + } + @Test public void testPlainTaskWaitsForBeingExecuted () throws Exception { R run = new R (); Task t = new Task (run); @@ -59,18 +220,22 @@ public class TaskTest extends NbTestCase { assertTrue ("Finished", t.isFinished ()); } + // this test is covered by emptyTask_isImmediatelyFinished_andNeverWaits and will be removed in next PR + @Test public void testTaskEMPTYIsFinished () throws Exception { assertTrue (Task.EMPTY.isFinished ()); } - + // this test is covered by emptyTask_isImmediatelyFinished_andNeverWaits and will be removed in next PR + @Test public void testWaitFinishedOnEMPTYTaskReturnsImmediatelly () throws Exception { Task.EMPTY.waitFinished (); } - + // this test is covered by emptyTask_isImmediatelyFinished_andNeverWaits and will be removed in next PR + @Test public void testWaitWithTimeOutReturnsImmediatellyOnFinishedTasks () throws Exception { assertTrue ("Was successfully finished", Task.EMPTY.waitFinished (0)); } - + @Test public void testWaitWithTimeOutReturnsAfterTimeOutWhenTheTaskIsNotComputedAtAll () throws Exception { if (!canWait1s()) { LOG.warning("Skipping testWaitWithTimeOutReturnsAfterTimeOutWhenTheTaskIsNotComputedAtAll, as the computer is not able to wait 1s!"); @@ -95,7 +260,7 @@ public class TaskTest extends NbTestCase { fail ("Something wrong happened the task should wait for 1000ms but it took: " + time + "\n" + log); } - + @Test public void testWaitOnStrangeTaskThatStartsItsExecutionInOverridenWaitFinishedMethodLikeFolderInstancesDo () throws Exception { class MyTask extends Task { private int values; @@ -116,7 +281,7 @@ public class TaskTest extends NbTestCase { assertTrue ("Ok, even with timeout we got the result", my.waitFinished (1000)); assertEquals ("But the old waitFinished is called", 1, my.values); } - + @Test public void testWaitOnStrangeTaskThatTakesReallyLongTime () throws Exception { class MyTask extends Task { public MyTask () { @@ -151,6 +316,7 @@ public class TaskTest extends NbTestCase { /* * see issue #130265 */ + @Test public void testWaitFinished0WaitsUntilFinished() throws Exception { Task task = new Task(new Runnable() { @Override --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists