Home | History | Annotate | Download | only in invocation
      1 /*
      2  * Copyright (c) 2016 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 package org.mockito.invocation;
      6 
      7 import org.mockito.ArgumentMatcher;
      8 
      9 import java.util.List;
     10 
     11 /**
     12  * <code>MatchableInvocation</code> wraps {@link Invocation} instance
     13  * and holds argument matchers associated with that invocation.
     14  * It is used during verification process:
     15  *
     16  * <pre class="code"><code class="java">
     17  *   mock.foo();   // <- invocation
     18  *   verify(mock).bar();  // <- matchable invocation
     19  * </code></pre>
     20  *
     21  * @since 2.2.12
     22  */
     23 public interface MatchableInvocation extends DescribedInvocation {
     24 
     25     /**
     26      * The actual invocation Mockito will match against.
     27      *
     28      * @since 2.2.12
     29      */
     30     Invocation getInvocation();
     31 
     32     /**
     33      * The argument matchers of this invocation.
     34      * When the invocation is declared without argument matchers (e.g. using plain arguments)
     35      * Mockito still converts them into {@link ArgumentMatcher} instances
     36      * that use 'eq' matching via {@link org.mockito.Mockito#eq(Object)}.
     37      *
     38      * @since 2.2.12
     39      */
     40     List<ArgumentMatcher> getMatchers();
     41 
     42     /**
     43      * Same method, mock and all arguments match.
     44      *
     45      * @since 2.2.12
     46      */
     47     boolean matches(Invocation candidate);
     48 
     49     /**
     50      * Candidate invocation has the similar method.
     51      * 'Similar' means the same method name, same mock, unverified, not overloaded, but not necessarily matching arguments
     52      *
     53      * @since 2.2.12
     54      */
     55     boolean hasSimilarMethod(Invocation candidate);
     56 
     57     /**
     58      * Returns true if the candidate invocation has the same method (method name and parameter types)
     59      *
     60      * @since 2.2.12
     61      */
     62     boolean hasSameMethod(Invocation candidate);
     63 
     64     /**
     65      * This method is used by Mockito to implement argument captor functionality (see {@link org.mockito.ArgumentCaptor}.
     66      * <p>
     67      * Makes this instance of matchable invocation capture all arguments of provided invocation.
     68      *
     69      * @param invocation the invocation to capture the arguments from
     70      *
     71      * @since 2.2.12
     72      */
     73     void captureArgumentsFrom(Invocation invocation);
     74 }
     75