1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5package org.mockito.internal.matchers; 6 7import org.mockito.ArgumentMatcher; 8 9import static org.mockito.internal.exceptions.Reporter.noArgumentValueWasCaptured; 10 11import java.io.Serializable; 12import java.util.LinkedList; 13import java.util.List; 14 15@SuppressWarnings("unchecked") 16public class CapturingMatcher<T> implements ArgumentMatcher<T>, CapturesArguments, VarargMatcher, Serializable { 17 18 private final LinkedList<Object> arguments = new LinkedList<Object>(); 19 20 public boolean matches(Object argument) { 21 return true; 22 } 23 24 public String toString() { 25 return "<Capturing argument>"; 26 } 27 28 public T getLastValue() { 29 if (arguments.isEmpty()) { 30 throw noArgumentValueWasCaptured(); 31 } 32 33 return (T) arguments.getLast(); 34 35 } 36 37 public List<T> getAllValues() { 38 return (List) arguments; 39 } 40 41 public void captureFrom(Object argument) { 42 this.arguments.add(argument); 43 } 44} 45