blob: a2a1fc00c0d63e77ab7991e16258ffbc72de1b9e [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal;
import org.junit.Before;
import org.junit.Test;
import org.mockito.stubbing.Stubbing;
import org.mockito.invocation.Invocation;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;
import java.util.ArrayList;
import java.util.List;
import static java.util.Arrays.asList;
import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.internal.invocation.finder.AllInvocationsFinder.find;
import static org.mockito.internal.invocation.finder.AllInvocationsFinder.findStubbings;
public class AllInvocationsFinderTest extends TestBase {
private IMethods mockTwo;
private IMethods mockOne;
@Before
public void setup() {
mockOne = mock(IMethods.class);
mockTwo = mock(IMethods.class);
}
@Test
public void no_interactions() throws Exception {
//expect
assertTrue(find(asList(mockOne, mockTwo)).isEmpty());
assertTrue(findStubbings(asList(mockOne, mockTwo)).isEmpty());
}
@Test
public void provides_invocations_in_order() throws Exception {
//given
mockOne.simpleMethod(100);
mockTwo.simpleMethod(200);
mockOne.simpleMethod(300);
//when
List<Invocation> invocations = find(asList(mockOne, mockTwo));
//then
assertEquals(3, invocations.size());
assertArgumentEquals(100, invocations.get(0));
assertArgumentEquals(200, invocations.get(1));
assertArgumentEquals(300, invocations.get(2));
}
@Test
public void deduplicates_interactions_from_the_same_mock() throws Exception {
//given
mockOne.simpleMethod(100);
//when
List<Invocation> invocations = find(asList(mockOne, mockOne, mockOne));
//then
assertEquals(1, invocations.size());
}
@Test
public void provides_stubbings_in_order() throws Exception {
//given
mockOne.simpleMethod(50); //ignored, not a stubbing
when(mockOne.simpleMethod(100)).thenReturn("100");
when(mockOne.simpleMethod(200)).thenReturn("200");
when(mockTwo.simpleMethod(300)).thenReturn("300");
//when
List<Stubbing> stubbings = new ArrayList<Stubbing>(findStubbings(asList(mockOne, mockOne, mockTwo)));
//then
assertEquals(3, stubbings.size());
assertArgumentEquals(100, stubbings.get(0).getInvocation());
assertArgumentEquals(200, stubbings.get(1).getInvocation());
assertArgumentEquals(300, stubbings.get(2).getInvocation());
}
private void assertArgumentEquals(Object argumentValue, Invocation invocation) {
assertEquals(argumentValue, invocation.getArgument(0));
}
}