/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.configuration.injection;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.util.*;
import static org.junit.Assert.*;
public class SimpleArgumentResolverTest {
@Test
public void should_return_object_matching_given_types() throws Exception {
ConstructorInjection.SimpleArgumentResolver resolver =
new ConstructorInjection.SimpleArgumentResolver(newSetOf(new HashSet<Long>(), new ByteArrayOutputStream(), new HashMap<String, String>()));
Object[] resolvedInstance = resolver.resolveTypeInstances(Set.class, Map.class, OutputStream.class);
assertEquals(3, resolvedInstance.length);
assertTrue(resolvedInstance[0] instanceof Set);
assertTrue(resolvedInstance[1] instanceof Map);
assertTrue(resolvedInstance[2] instanceof OutputStream);
}
@Test
public void should_return_null_when_match_is_not_possible_on_given_types() throws Exception {
ConstructorInjection.SimpleArgumentResolver resolver =
new ConstructorInjection.SimpleArgumentResolver(newSetOf(new HashSet<Float>(), new ByteArrayOutputStream()));
Object[] resolvedInstance = resolver.resolveTypeInstances(Set.class, Map.class, OutputStream.class);
assertEquals(3, resolvedInstance.length);
assertTrue(resolvedInstance[0] instanceof Set);
assertNull(resolvedInstance[1]);
assertTrue(resolvedInstance[2] instanceof OutputStream);
}
@Test
public void should_return_null_when_types_are_primitives() throws Exception {
ConstructorInjection.SimpleArgumentResolver resolver =
new ConstructorInjection.SimpleArgumentResolver(newSetOf(new HashMap<Integer, String>(), new TreeSet<Integer>()));
Object[] resolvedInstance = resolver.resolveTypeInstances(Set.class, Map.class, Boolean.class);
assertEquals(3, resolvedInstance.length);
assertTrue(resolvedInstance[0] instanceof Set);
assertTrue(resolvedInstance[1] instanceof Map);
assertNull(resolvedInstance[2]);
}
private Set<Object> newSetOf(Object... objects) {
return new HashSet<Object>(Arrays.asList(objects));
}
}