package ru.orangesoftware.financisto2.test.service; import android.test.AndroidTestCase; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import ru.orangesoftware.financisto2.model.TransactionInfo; import ru.orangesoftware.financisto2.service.RecurrenceScheduler; public class RecurrenceComparatorTest extends AndroidTestCase { RecurrenceScheduler.RecurrenceComparator comparator; /** * Correct order by nextDateTime: * 2010-12-01 * 2010-12-02 * 2010-11-23 <- today * 2010-11-11 * 2010-10-08 * NULL */ public void testShouldCheckCorrectOrderOfSortedSchedules() { // given long today = date(2010, 11, 23).getTime(); comparator = new RecurrenceScheduler.RecurrenceComparator(today); TransactionInfo[] transactions = { create(date(2010, 11, 11)), create(date(2010, 10, 8)), null, create(date(2010, 12, 1)), create(date(2010, 12, 2)), create(null), create(null) }; // when Arrays.sort(transactions, comparator); // then assertEquals(date(2010, 12, 1), transactions[0].nextDateTime); assertEquals(date(2010, 12, 2), transactions[1].nextDateTime); assertEquals(date(2010, 11, 11), transactions[2].nextDateTime); assertEquals(date(2010, 10, 8), transactions[3].nextDateTime); } private TransactionInfo create(Date nextDateTime) { TransactionInfo ti = new TransactionInfo(); ti.nextDateTime = nextDateTime; return ti; } private Date date(int y, int m, int d) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, y); c.set(Calendar.MONTH, m-1); c.set(Calendar.DAY_OF_MONTH, d); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); return c.getTime(); } }