12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin/* 22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * Copyright (c) 2007 Mockito contributors 32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * This program is made available under the terms of the MIT License. 42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin */ 52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockito.verification; 62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.Test; 82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.InOrder; 92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.Mock; 102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.exceptions.base.MockitoAssertionError; 112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.util.Timer; 122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.verification.VerificationDataImpl; 132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockitoutil.TestBase; 142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1508bd32ce48b12ae751dd5c4829ff09a6fb9894f0Philip P. Moltmannimport static org.junit.Assert.fail; 162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.Mockito.*; 172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class TimeoutTest extends TestBase { 192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Mock 212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin VerificationMode mode; 222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Mock 232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin VerificationDataImpl data; 242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Mock 252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Timer timer; 262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin private final MockitoAssertionError error = new MockitoAssertionError(""); 282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void should_pass_when_verification_passes() { 312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Timeout t = new Timeout(1, mode, timer); 322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(timer.isCounting()).thenReturn(true); 342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doNothing().when(mode).verify(data); 352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin t.verify(data); 372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin InOrder inOrder = inOrder(timer); 392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin inOrder.verify(timer).start(); 402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin inOrder.verify(timer).isCounting(); 412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void should_fail_because_verification_fails() { 452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Timeout t = new Timeout(1, mode, timer); 462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(timer.isCounting()).thenReturn(true, true, true, false); 482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error). 492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error). 502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error). 512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(mode).verify(data); 522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin try { 542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin t.verify(data); 552637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin fail(); 562637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } catch (MockitoAssertionError e) {} 572637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 582637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(timer, times(4)).isCounting(); 592637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 602637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 612637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 622637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void should_pass_even_if_first_verification_fails() { 632637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Timeout t = new Timeout(1, mode, timer); 642637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 652637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(timer.isCounting()).thenReturn(true, true, true, false); 662637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error). 672637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error). 682637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doNothing(). 692637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(mode).verify(data); 702637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 712637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin t.verify(data); 722637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(timer, times(3)).isCounting(); 732637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 742637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 752637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 762637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void should_try_to_verify_correct_number_of_times() { 772637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Timeout t = new Timeout(10, mode, timer); 782637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 792637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin doThrow(error).when(mode).verify(data); 802637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(timer.isCounting()).thenReturn(true, true, true, true, true, false); 812637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 822637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin try { 832637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin t.verify(data); 842637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin fail(); 852637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } catch (MockitoAssertionError e) {} 862637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 872637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(mode, times(5)).verify(data); 882637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 892637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 902637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin} 91