package co.smartreceipts.android.model.comparators; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import java.sql.Date; import co.smartreceipts.android.model.Receipt; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) public class ReceiptDateComparatorTest { ReceiptDateComparator ascendingComparator, descendingComparator, defaultComparator; @Mock Receipt first, second; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); // DESC places the 'most recent' date at the front of the list ascendingComparator = new ReceiptDateComparator(true); descendingComparator = new ReceiptDateComparator(false); defaultComparator = new ReceiptDateComparator(); // same as ascendingComparator final long now = System.currentTimeMillis(); when(first.getDate()).thenReturn(new Date(now)); when(second.getDate()).thenReturn(new Date(now + 10000L)); } @Test public void compareNullFirstToNullSecond() { assertTrue(ascendingComparator.compare(null, null) == 0); assertTrue(descendingComparator.compare(null, null) == 0); assertTrue(defaultComparator.compare(null, null) == 0); } @Test public void compareFirstToNullSecond() { assertTrue(ascendingComparator.compare(first, null) > 0); assertTrue(descendingComparator.compare(first, null) > 0); assertTrue(defaultComparator.compare(first, null) > 0); } @Test public void compareNullFirstToSecond() { assertTrue(ascendingComparator.compare(null, second) < 0); assertTrue(descendingComparator.compare(null, second) < 0); assertTrue(defaultComparator.compare(null, second) < 0); } @Test public void compareFirstToFirst() { assertTrue(ascendingComparator.compare(first, first) == 0); assertTrue(descendingComparator.compare(first, first) == 0); assertTrue(defaultComparator.compare(first, first) == 0); } @Test public void compareFirstToSecond() { assertTrue(ascendingComparator.compare(first, second) < 0); assertTrue(descendingComparator.compare(first, second) > 0); assertTrue(defaultComparator.compare(first, second) < 0); } @Test public void compareSecondToFirst() { assertTrue(ascendingComparator.compare(second, first) > 0); assertTrue(descendingComparator.compare(second, first) < 0); assertTrue(defaultComparator.compare(second, first) > 0); } }