private void runEnterTest() { assertFalse(Thread.currentThread().isInterrupted()); assertFalse(monitor.isOccupiedByCurrentThread()); doEnterScenarioSetUp(); boolean interruptedBeforeCall = Thread.currentThread().isInterrupted(); Outcome actualOutcome = doCall(); boolean occupiedAfterCall = monitor.isOccupiedByCurrentThread(); boolean interruptedAfterCall = Thread.currentThread().isInterrupted(); if (occupiedAfterCall) { guard.setSatisfied(true); monitor.leave(); assertFalse(monitor.isOccupiedByCurrentThread()); } assertEquals(expectedOutcome, actualOutcome); assertEquals(expectedOutcome == Outcome.SUCCESS, occupiedAfterCall); assertEquals( interruptedBeforeCall && expectedOutcome != Outcome.INTERRUPT, interruptedAfterCall); }
private void runWaitTest() { assertFalse(Thread.currentThread().isInterrupted()); assertFalse(monitor.isOccupiedByCurrentThread()); monitor.enter(); try { assertTrue(monitor.isOccupiedByCurrentThread()); doWaitScenarioSetUp(); boolean interruptedBeforeCall = Thread.currentThread().isInterrupted(); Outcome actualOutcome = doCall(); boolean occupiedAfterCall = monitor.isOccupiedByCurrentThread(); boolean interruptedAfterCall = Thread.currentThread().isInterrupted(); assertEquals(expectedOutcome, actualOutcome); assertTrue(occupiedAfterCall); assertEquals( interruptedBeforeCall && expectedOutcome != Outcome.INTERRUPT, interruptedAfterCall); } finally { guard.setSatisfied(true); monitor.leave(); assertFalse(monitor.isOccupiedByCurrentThread()); } }