1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5package org.mockito.verification; 6 7import org.mockito.exceptions.Reporter; 8import org.mockito.exceptions.misusing.FriendlyReminderException; 9import org.mockito.internal.verification.VerificationModeFactory; 10import org.mockito.internal.verification.VerificationWithTimeoutImpl; 11import org.mockito.internal.verification.api.VerificationData; 12 13/** 14 * See the javadoc for {@link VerificationWithTimeout} 15 * <p> 16 * Typically, you won't use this class explicitly. Instead use timeout() method on Mockito class. 17 * See javadoc for {@link VerificationWithTimeout} 18 */ 19public class Timeout implements VerificationWithTimeout { 20 21 VerificationWithTimeoutImpl impl; 22 23 /** 24 * See the javadoc for {@link VerificationWithTimeout} 25 * <p> 26 * Typically, you won't use this class explicitly. Instead use timeout() method on Mockito class. 27 * See javadoc for {@link VerificationWithTimeout} 28 */ 29 public Timeout(int millis, VerificationMode delegate) { 30 this(10, millis, delegate); 31 } 32 33 /** 34 * See the javadoc for {@link VerificationWithTimeout} 35 */ 36 Timeout(int treshhold, int millis, VerificationMode delegate) { 37 this.impl = new VerificationWithTimeoutImpl(treshhold, millis, delegate); 38 } 39 40 /** 41 * See the javadoc for {@link VerificationWithTimeout} 42 */ 43 public void verify(VerificationData data) { 44 impl.verify(data); 45 } 46 47 /** 48 * See the javadoc for {@link VerificationWithTimeout} 49 */ 50 public VerificationMode atLeast(int minNumberOfInvocations) { 51 return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.atLeast(minNumberOfInvocations)); 52 } 53 54 /** 55 * See the javadoc for {@link VerificationWithTimeout} 56 */ 57 public VerificationMode atLeastOnce() { 58 return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.atLeastOnce()); 59 } 60 61 /** 62 * See the javadoc for {@link VerificationWithTimeout} 63 */ 64 public VerificationMode atMost(int maxNumberOfInvocations) { 65 new Reporter().atMostShouldNotBeUsedWithTimeout(); 66 return null; 67 } 68 69 /** 70 * See the javadoc for {@link VerificationWithTimeout} 71 */ 72 public VerificationMode never() { 73 return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.times(0)); 74 } 75 76 /** 77 * See the javadoc for {@link VerificationWithTimeout} 78 */ 79 public VerificationMode only() { 80 return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.only()); 81 } 82 83 /** 84 * See the javadoc for {@link VerificationWithTimeout} 85 */ 86 public VerificationMode times(int wantedNumberOfInvocations) { 87 return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.times(wantedNumberOfInvocations)); 88 } 89}