package com.plusonelabs.calendar; import android.test.InstrumentationTestCase; import com.plusonelabs.calendar.calendar.CalendarEvent; import com.plusonelabs.calendar.calendar.MockCalendarContentProvider; import com.plusonelabs.calendar.widget.CalendarEntry; import com.plusonelabs.calendar.widget.WidgetEntry; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; /** * @author yvolk@yurivolkov.com */ public class SingleEventTest extends InstrumentationTestCase { private static final String TAG = SingleEventTest.class.getSimpleName(); private MockCalendarContentProvider provider = null; private EventRemoteViewsFactory factory = null; private int eventId = 0; @Override protected void setUp() throws Exception { super.setUp(); provider = MockCalendarContentProvider.getContentProvider(this); factory = new EventRemoteViewsFactory(provider.getContext(), provider.getWidgetId()); assertTrue(factory.getWidgetEntries().isEmpty()); } @Override protected void tearDown() throws Exception { provider.tearDown(); super.tearDown(); } public void testEventAttributes() { DateTime today = DateUtil.now(provider.getSettings().getTimeZone()).withTimeAtStartOfDay(); DateUtil.setNow(today.plusHours(10)); CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(), provider.getSettings().getTimeZone(), false); event.setEventId(++eventId); event.setTitle("Single Event today with all known attributes"); event.setStartDate(today.plusHours(12)); event.setEndDate(today.plusHours(13)); event.setColor(0xFF92E1C0); event.setLocation("somewhere"); event.setAlarmActive(true); event.setRecurring(true); assertOneEvent(event, true); event.setAlarmActive(false); assertOneEvent(event, true); event.setRecurring(false); assertOneEvent(event, true); } public void testAlldayEventAttributes() { DateTime today = DateUtil.now(provider.getSettings().getTimeZone()).withTimeAtStartOfDay(); DateUtil.setNow(today.plusHours(10)); CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(), provider.getSettings().getTimeZone(), true); event.setEventId(++eventId); event.setTitle("Single AllDay event today with all known attributes"); event.setStartDate(today.minusDays(1)); event.setEndDate(today.plusDays(1)); event.setColor(0xFF92E1C0); event.setLocation("somewhere"); assertOneEvent(event, false); event.setStartDate(today); event.setEndDate(today.plusDays(1)); assertOneEvent(event, true); } public void testAlldayEventMillis() { DateTime today = DateUtil.now(DateTimeZone.UTC).withTimeAtStartOfDay(); CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(), provider.getSettings().getTimeZone(), true); event.setEventId(++eventId); event.setTitle("Single All day event from millis"); event.setStartMillis(today.getMillis()); assertEquals(event.getStartDate().toString(), today.getMillis(), event.getStartMillis()); assertEquals(event.getEndDate().toString(), today.plusDays(1).getMillis(), event.getEndMillis()); } private void assertOneEvent(CalendarEvent event, boolean equal) { provider.clear(); provider.addRow(event); factory.onDataSetChanged(); factory.logWidgetEntries(TAG); assertEquals(1, provider.getQueriesCount()); assertEquals(factory.getWidgetEntries().toString(), 2, factory.getWidgetEntries().size()); WidgetEntry entry = factory.getWidgetEntries().get(1); assertTrue(entry instanceof CalendarEntry); CalendarEvent eventOut = ((CalendarEntry) entry).getEvent(); if (equal) { assertEquals(event.toString(), eventOut.toString()); } else { assertNotSame(event.toString(), eventOut.toString()); } } }