1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/* 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.verification; 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Mockito; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/** 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * VerificationWithTimeout is a {@link VerificationMode} that allows combining existing verification modes with 'timeout'. E.g: 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).times(5)).foo(); 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).never()).bar(); 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(200).atLeastOnce()).baz(); 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito#verify(Object, VerificationMode)} 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic interface VerificationWithTimeout extends VerificationMode { 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Allows verifying exact number of invocations within given timeout 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).times(2)).someMethod("some arg"); 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito} class 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param wantedNumberOfInvocations wanted number of invocations 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode times(int wantedNumberOfInvocations); 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Alias to times(0), see {@link #times(int)} 42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Verifies that interaction did not happen within given timeout. E.g: 44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).never()).someMethod(); 46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * If you want to verify there were NO interactions with the mock 50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * check out {@link Mockito#verifyNoMoreInteractions(Object...)} 51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito} class 53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode never(); 57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Allows at-least-once verification withing given timeout. E.g: 60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).atLeastOnce()).someMethod("some arg"); 62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 63e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Alias to atLeast(1) 64e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 65e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito} class 66e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 67e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 68e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 69e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode atLeastOnce(); 70e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 71e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 72e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Allows at-least-x verification withing given timeout. E.g: 73e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 74e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, timeout(100).atLeast(3)).someMethod("some arg"); 75e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 76e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 77e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito} class 78e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 79e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param minNumberOfInvocations minimum number of invocations 80e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 81e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 82e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 83e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode atLeast(int minNumberOfInvocations); 84e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 85e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 86e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @deprecated 87e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 88e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <b>Deprecated</b> 89e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * validation with timeout combined with atMost simply does not make sense... 90e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * The test would have passed immediately in the concurrent environment 91e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 92e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * To avoid compilation erros upon upgrade the method is deprecated and it throws a "friendly reminder" exception. 93e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 94e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * In future release we will remove timeout(x).atMost(y) from the API. 95e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 96e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Do you want to find out more? See <a href="http://code.google.com/p/mockito/issues/detail?id=235">issue 235</a> 97e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 98e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 99e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 100e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson @Deprecated 101e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode atMost(int maxNumberOfInvocations); 102e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 103e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 104e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Allows checking if given method was the only one invoked. E.g: 105e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 106e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock, only()).someMethod(); 107e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //above is a shorthand for following 2 lines of code: 108e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verify(mock).someMethod(); 109e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * verifyNoMoreInvocations(mock); 110e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 111e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 112e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 113e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See also {@link Mockito#verifyNoMoreInteractions(Object...)} 114e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 115e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito} class 116e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 117e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return verification mode 118e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 119e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public VerificationMode only(); 120e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}