package jp.mydns.sys1yagi.android.mockitosample;
import static org.mockito.Mockito.*;
import java.util.Iterator;
import java.util.List;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import android.test.AndroidTestCase;
public class MockTest extends AndroidTestCase {
private final static String TAG = MockTest.class.getSimpleName();
@Override
protected void setUp() throws Exception {
super.setUp();
System.setProperty("dexmaker.dexcache", getContext().getCacheDir()
.getPath());
MockitoAnnotations.initMocks(this);
}
public void listProcessor(List<String> list) {
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
}
public void listIterateProcessor(List<String> list) {
for (String str : list) {
assertEquals("test", str);
}
}
@SuppressWarnings("unchecked")
public void testMock() {
List<String> list = mock(List.class);
when(list.size()).thenReturn(1);
when(list.get(0)).thenReturn("test");
listProcessor(list);
verify(list).get(0);
}
@SuppressWarnings("unchecked")
public void testIteratorMock() {
List<String> list = mock(List.class);
Iterator<String> itr = mock(Iterator.class);
when(itr.hasNext()).thenReturn(true).thenReturn(true).thenReturn(false);
when(itr.next()).thenReturn("test");
when(list.iterator()).thenReturn(itr);
listIterateProcessor(list);
verify(list).iterator();
verify(itr, times(3)).hasNext();
verify(itr, times(2)).next();
}
static class Something {
private List<String> list;
public void setList(List<String> list) {
this.list = list;
}
public int getSize() {
return list.size();
}
}
@Mock
List<String> list;
@InjectMocks
Something mSomething;
public void testSomething() {
mSomething = new Something();
MockitoAnnotations.initMocks(this);
when(list.size()).thenReturn(10);
assertEquals(10, mSomething.getSize());
}
public static class Status {
public boolean isReady() {
return false;
}
}
public int getMode(Status status) {
if (status.isReady()) {
return 1;
} else {
return 0;
}
}
public void testReady() {
Status status = mock(Status.class);
when(status.isReady()).thenReturn(false);
assertEquals(0, getMode(status));
}
public void testNotReady() {
Status status = mock(Status.class);
when(status.isReady()).thenReturn(true);
assertEquals(1, getMode(status));
}
}