@Test public void getSubscribedListenersExecutorOnlyTest() { TestRunnable tr = new TestRunnable(); onceHelper.addListener(tr, SameThreadSubmitterExecutor.instance()); assertTrue(onceHelper.getSubscribedListeners().contains(tr)); }
@Test public void runListenerExecutorTest() { PriorityScheduler executor = new StrictPriorityScheduler(1); try { TestRunnable tr = new TestRunnable(); onceHelper.addListener(tr, executor); onceHelper.callListeners(); tr.blockTillFinished(); assertTrue(tr.ranOnce()); assertTrue(Thread.currentThread() != tr.lastRanThread); } finally { executor.shutdownNow(); } }
private void removeListenerFromCallingThreadTest(Executor executor) { final TestRunnable removedRunnable = new TestRunnable(); repeatedHelper.addListener(new TestRunnable()); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(new Runnable() { @Override public void run() { repeatedHelper.removeListener(removedRunnable); } }, executor); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(removedRunnable, executor); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(new TestRunnable(), executor); repeatedHelper.addListener(new TestRunnable()); repeatedHelper.callListeners(); // call again and verify it did not run again repeatedHelper.callListeners(); assertEquals(1, removedRunnable.getRunCount()); }
private void addListenerFromCallingThread(Executor executor) { final TestRunnable addedTR = new TestRunnable(); TestRunnable tr = new TestRunnable() { @Override public void handleRunFinish() { repeatedHelper.addListener(addedTR, executor); } }; repeatedHelper.addListener(tr, executor); repeatedHelper.addListener(DoNothingRunnable.instance(), executor); repeatedHelper.callListeners(); assertTrue(tr.ranOnce()); assertEquals(0, addedTR.getRunCount()); repeatedHelper.callListeners(); assertEquals(2, tr.getRunCount()); assertEquals(1, addedTR.getRunCount()); }
@Test public void addAndCallListenersTest() { TestRunnable onceTR = new TestRunnable(); TestRunnable repeatedTR = new TestRunnable(); onceHelper.addListener(onceTR); repeatedHelper.addListener(repeatedTR); onceHelper.callListeners(); repeatedHelper.callListeners(); assertTrue(onceTR.ranOnce()); assertTrue(repeatedTR.ranOnce()); repeatedHelper.callListeners(); assertTrue(onceTR.ranOnce()); assertEquals(2, repeatedTR.getRunCount()); }
@Test public void removeListenerAfterCallTest() { TestRunnable onceTR = new TestRunnable(); TestRunnable repeatedTR = new TestRunnable(); assertFalse(onceHelper.removeListener(onceTR)); assertFalse(repeatedHelper.removeListener(repeatedTR)); onceHelper.addListener(onceTR); repeatedHelper.addListener(repeatedTR); onceHelper.callListeners(); repeatedHelper.callListeners(); assertFalse(onceHelper.removeListener(onceTR)); assertTrue(repeatedHelper.removeListener(repeatedTR)); }
@Test public void clearListenersTest() { TestRunnable onceTR = new TestRunnable(); TestRunnable repeatedTR = new TestRunnable(); onceHelper.addListener(onceTR); repeatedHelper.addListener(repeatedTR); onceHelper.clearListeners(); repeatedHelper.clearListeners(); onceHelper.callListeners(); repeatedHelper.callListeners(); assertFalse(onceTR.ranOnce()); assertFalse(repeatedTR.ranOnce()); }
@Test public void getSubscribedListenersInThreadOnlyTest() { TestRunnable tr = new TestRunnable(); onceHelper.addListener(tr); assertTrue(onceHelper.getSubscribedListeners().contains(tr)); }
@Test public void getSubscribedListenersTest() { assertTrue(onceHelper.getSubscribedListeners().isEmpty()); TestRunnable tr = new TestRunnable(); onceHelper.addListener(tr); assertTrue(onceHelper.getSubscribedListeners().contains(tr)); onceHelper.removeListener(tr); assertTrue(onceHelper.getSubscribedListeners().isEmpty()); }
@Test public void runListenerCatchExecptionTest() { TestRunnable tr = new TestRunnable() { @Override public void handleRunFinish() { throw new SuppressedStackRuntimeException(); } }; onceHelper.addListener(tr); onceHelper.callListeners(); assertTrue(tr.ranOnce()); }
@Test public void addAfterCalledTest() { TestRunnable onceTR = new TestRunnable(); TestRunnable repeatedTR = new TestRunnable(); onceHelper.callListeners(); repeatedHelper.callListeners(); onceHelper.addListener(onceTR); repeatedHelper.addListener(repeatedTR); assertTrue(onceTR.ranOnce()); assertFalse(repeatedTR.ranOnce()); repeatedHelper.callListeners(); assertTrue(onceTR.ranOnce()); assertTrue(repeatedTR.ranOnce()); }
private void removeListenerTest(Executor executor) { TestRunnable onceTR = new TestRunnable(); TestRunnable repeatedTR = new TestRunnable(); assertFalse(onceHelper.removeListener(onceTR)); assertFalse(repeatedHelper.removeListener(repeatedTR)); onceHelper.addListener(onceTR, executor); repeatedHelper.addListener(repeatedTR, executor); // should be false for the opposite assertFalse(onceHelper.removeListener(repeatedTR)); assertFalse(repeatedHelper.removeListener(onceTR)); assertTrue(onceHelper.removeListener(onceTR)); assertTrue(repeatedHelper.removeListener(repeatedTR)); }
@Test public void runListenerNoExecutorTest() { TestRunnable tr = new TestRunnable(); onceHelper.addListener(tr); onceHelper.callListeners(); assertTrue(tr.ranOnce()); assertTrue(Thread.currentThread() == tr.lastRanThread); }
@Test public void getSubscribedListenersMixedExecutionTest() { TestRunnable tr1 = new TestRunnable(); TestRunnable tr2 = new TestRunnable(); onceHelper.addListener(tr1); onceHelper.addListener(tr2, SameThreadSubmitterExecutor.instance()); assertTrue(onceHelper.getSubscribedListeners().contains(tr1)); assertTrue(onceHelper.getSubscribedListeners().contains(tr2)); }