/* * Copyright (C) 2012, Katy Hilgenberg. * Special acknowledgments to: Knowledge & Data Engineering Group, University of Kassel (http://www.kde.cs.uni-kassel.de). * Contact: sdcf@cs.uni-kassel.de * * This file is part of the SDCFramework (Sensor Data Collection Framework) project. * * The SDCFramework is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The SDCFramework is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the SDCFramework. If not, see <http://www.gnu.org/licenses/>. */ package de.unikassel.android.sdcframework.data.tests; import de.unikassel.android.sdcframework.data.Weekday; import de.unikassel.android.sdcframework.data.WeekdaySchedule; import de.unikassel.android.sdcframework.data.WeekdayScheduleEntry; import de.unikassel.android.sdcframework.data.WeekdaySchedulerAction; import de.unikassel.android.sdcframework.data.independent.GlobalSerializer; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Parcel; import android.test.AndroidTestCase; /** * Tests for the type {@link WeekdayScheduleEntry}. * * @author Katy Hilgenberg * */ public class TestWeekdayScheduleEntry extends AndroidTestCase { /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#equals(java.lang.Object)} * . */ public final void testEquals() { int startTime = 4711; WeekdaySchedulerAction startAction = WeekdaySchedulerAction.StartService; WeekdaySchedulerAction stopAction = WeekdaySchedulerAction.StopService; WeekdayScheduleEntry entry1 = new WeekdayScheduleEntry( startTime, startAction ); WeekdayScheduleEntry entry2 = new WeekdayScheduleEntry( startTime, stopAction ); WeekdayScheduleEntry entry3 = new WeekdayScheduleEntry( startTime, stopAction ); WeekdayScheduleEntry entry4 = new WeekdayScheduleEntry( startTime + 1, stopAction ); assertFalse( "Expected entry1 is not equal to entry2", entry1.equals( entry2 ) ); assertTrue( "Expected entry2 is equal to entry3", entry2.equals( entry3 ) ); assertFalse( "Expected entry3 is not equal to entry4", entry3.equals( entry4 ) ); entry2.setValid( true ); entry3.setValid( false ); assertTrue( "Expected entry2 is equal to entry3 even with different validity states", entry2.equals( entry3 ) ); entry2.setWeekdaySchedule( new WeekdaySchedule( Weekday.Monday ) ); entry3.setWeekdaySchedule( new WeekdaySchedule( Weekday.Tuesday ) ); assertTrue( "Expected entry2 is equal to entry3 even with different associated weekdays", entry2.equals( entry3 ) ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#toString()} * . */ public final void testToString() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 47110, WeekdaySchedulerAction.StartService ); String xml = null; try { xml = entry.toXML(); } catch ( Exception e ) { fail( "Unexpected serialization exception" ); } assertEquals( "Expected string representation equals xml representation", xml, entry.toString() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#WeekdayScheduleEntry(android.content.Intent)} * and * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getIntent()} * . */ public final void testWeekdayScheduleEntryIntent() { WeekdayScheduleEntry orgEntry = new WeekdayScheduleEntry( 81500, WeekdaySchedulerAction.StopService ); WeekdaySchedule weekdaySchedule1 = new WeekdaySchedule( Weekday.Sunday ); orgEntry.setWeekdaySchedule( weekdaySchedule1 ); Intent intent = orgEntry.getIntent(); assertTrue( "Expected extra for Weekdayschedule", intent.hasExtra( WeekdayScheduleEntry.class.getSimpleName() ) ); assertTrue( "Expected extra for Weekday", intent.hasExtra( Weekday.class.getSimpleName() ) ); Weekday weekday = intent.getParcelableExtra( Weekday.class.getSimpleName() ); assertTrue( "Expected weekday of parcel is equal to weekday of entry", orgEntry.getWeekday().equals( weekday ) ); WeekdayScheduleEntry entryFromParcel = intent.getParcelableExtra( WeekdayScheduleEntry.class.getSimpleName() ); assertTrue( "Expected entry is equal to entry from parcel", orgEntry.equals( entryFromParcel ) ); WeekdayScheduleEntry entryFromIntent = new WeekdayScheduleEntry( intent ); assertTrue( "Expected entry is equal to entryFromIntent", orgEntry.equals( entryFromIntent ) ); assertTrue( "Expected weekday of entry is equal to weekday of entryFromIntent", orgEntry.getWeekday().equals( entryFromIntent.getWeekday() ) ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#WeekdayScheduleEntry(de.unikassel.android.sdcframework.data.WeekdayScheduleEntry)} * . */ public final void testWeekdayScheduleEntryWeekdayScheduleEntry() { WeekdayScheduleEntry entry1 = new WeekdayScheduleEntry( 81500, WeekdaySchedulerAction.StopService ); WeekdaySchedule weekdaySchedule1 = new WeekdaySchedule( Weekday.Sunday ); entry1.setWeekdaySchedule( weekdaySchedule1 ); entry1.setValid( !entry1.isValid() ); WeekdayScheduleEntry entry2 = new WeekdayScheduleEntry( entry1 ); assertEquals( "Expected equal time", entry1.getSeconds(), entry2.getSeconds() ); assertEquals( "Expected equal validity state", entry1.isValid(), entry2.isValid() ); assertEquals( "Expected equal action", entry1.getAction(), entry2.getAction() ); assertNull( "Expected no weekday schedule associated after copy construction", entry2.getWeekdaySchedule() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#WeekdayScheduleEntry(int, de.unikassel.android.sdcframework.data.WeekdaySchedulerAction)} * . */ public final void testWeekdayScheduleEntryIntWeekdaySchedulerAction() { int seconds = 81500; WeekdaySchedulerAction action = WeekdaySchedulerAction.StopService; WeekdayScheduleEntry entry = new WeekdayScheduleEntry( seconds, action ); assertNull( "Expected weekday null without an associated weekday schedule", entry.getWeekday() ); assertEquals( "Expected seconds intitialized with constructor parameter", seconds, entry.getSeconds() ); assertEquals( "Expected action intitialized with constructor parameter", action, entry.getAction() ); assertTrue( "Expected validity flag intitialized with true", entry.isValid() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getWeekdaySchedule()} * and * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#setWeekdaySchedule(de.unikassel.android.sdcframework.data.WeekdaySchedule)} * . */ public final void testGetWeekdaySchedule() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 1337, WeekdaySchedulerAction.StartService ); assertNull( "Expected weekday schedule null without an association", entry.getWeekdaySchedule() ); WeekdaySchedule weekdaySchedule = new WeekdaySchedule( Weekday.Thursday ); entry.setWeekdaySchedule( weekdaySchedule ); assertNotNull( "Expected weekday schedule not null after an association", entry.getWeekdaySchedule() ); assertSame( "Unexpected associated weekday schedule", weekdaySchedule, entry.getWeekdaySchedule() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getWeekday()} * . */ public final void testGetWeekday() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 1337, WeekdaySchedulerAction.StartService ); assertNull( "Expected weekday null without an associated weekday schedule", entry.getWeekday() ); entry.setWeekdaySchedule( new WeekdaySchedule( Weekday.Thursday ) ); assertNotNull( "Expected weekday not null after association with a weekday schedule", entry.getWeekday() ); assertEquals( "Unexpected associated weekday", Weekday.Thursday, entry.getWeekday() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getSeconds()} * and * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#setSeconds(int)} * . */ public final void testGetSeconds() { int seconds = 471100; WeekdayScheduleEntry entry = new WeekdayScheduleEntry( seconds, WeekdaySchedulerAction.StopService ); assertEquals( "Expected seconds intitialized with constructor parameter", seconds, entry.getSeconds() ); seconds = seconds - 3456; entry.setSeconds( seconds ); assertEquals( "Expected seconds intitialized with constructor parameter", seconds, entry.getSeconds() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getMilliseconds()} * . */ public final void testGetMilliseconds() { int seconds = 113456; WeekdayScheduleEntry entry = new WeekdayScheduleEntry( seconds, WeekdaySchedulerAction.StopService ); assertEquals( "Expected milliseconds intitialized", seconds * 1000, entry.getMilliseconds() ); seconds = seconds - 3456; entry.setSeconds( seconds ); assertEquals( "Expected milliseconds intitialized", seconds * 1000, entry.getMilliseconds() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#getAction()} * and * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#setAction(de.unikassel.android.sdcframework.data.WeekdaySchedulerAction)} * . */ public final void testGetAction() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 81500, WeekdaySchedulerAction.StopService ); assertEquals( "Expected validity flag intitialized with constructor parameter", WeekdaySchedulerAction.StopService, entry.getAction() ); entry.setAction( WeekdaySchedulerAction.StartService ); assertEquals( "Expected validity flag updated", WeekdaySchedulerAction.StartService, entry.getAction() ); entry.setAction( WeekdaySchedulerAction.StopService ); assertEquals( "Expected validity flag updated", WeekdaySchedulerAction.StopService, entry.getAction() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#toXML()} * . */ public final void testToXML() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 47110, WeekdaySchedulerAction.StartService ); try { String xml = entry.toXML(); WeekdayScheduleEntry entryFromXML = GlobalSerializer.fromXML( WeekdayScheduleEntry.class, xml ); assertEquals( "Expected deserialized entry equals original one", entry, entryFromXML ); } catch ( Exception e ) { fail( "Unexpected serialization exception" ); } } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#isValid()} * and * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#setValid(boolean)} * . */ public final void testIsValid() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 81500, WeekdaySchedulerAction.StopService ); assertTrue( "Expected validity flag intitialized with true", entry.isValid() ); entry.setValid( false ); assertFalse( "Expected validity flag changed", entry.isValid() ); entry.setValid( true ); assertTrue( "Expected validity flag changed", entry.isValid() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#describeContents()} * . */ public final void testDescribeContents() { assertEquals( "Expected no special content", 0, new WeekdayScheduleEntry( 0, WeekdaySchedulerAction.StartService ).describeContents() ); } /** * Test method for * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#writeToParcel(android.os.Parcel, int)} * and * * {@link de.unikassel.android.sdcframework.data.WeekdayScheduleEntry#WeekdayScheduleEntry(android.os.Parcel)} * . */ @SuppressLint( "Recycle" ) public final void testWriteToParcel() { WeekdayScheduleEntry entry = new WeekdayScheduleEntry( 13, WeekdaySchedulerAction.StartService ); Parcel parcel = Parcel.obtain(); entry.writeToParcel( parcel, 0 ); parcel.setDataPosition( 0 ); WeekdayScheduleEntry entryFromParcel = WeekdayScheduleEntry.CREATOR.createFromParcel( parcel ); assertEquals( "Expected entry created from parcel equal to the original entry", entry, entryFromParcel ); } }