Added positionOf() method to DaysOfWeek

This commit is contained in:
Phillip Hsu 2016-06-01 20:32:08 -07:00
parent 4de02ed353
commit 9aa47ccfbe
2 changed files with 91 additions and 5 deletions

View File

@ -3,6 +3,7 @@ package com.philliphsu.clock2;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
import java.util.Arrays;
@ -57,11 +58,21 @@ public class DaysOfWeek {
return sAppContext.getString(LABELS_RES[weekDay]);
}
/** @return the week day whose order is specified by {@code ordinalDay} */
public int weekDay(int ordinalDay) {
if (ordinalDay < 0 || ordinalDay > 6)
/** @return the week day at {@code position} within the user-defined week */
public int weekDay(int position) {
if (position < 0 || position > 6)
throw new ArrayIndexOutOfBoundsException("Ordinal day out of range");
return DAYS[ordinalDay];
return DAYS[position];
}
/** @return the position of the {@code weekDay} within the user-defined week */
public int positionOf(int weekDay) {
if (weekDay < SUNDAY || weekDay > SATURDAY)
throw new ArrayIndexOutOfBoundsException("Week day ("+weekDay+") out of range");
for (int i = 0; i < DAYS.length; i++)
if (DAYS[i] == weekDay)
return i;
return -1;
}
@Override
@ -71,7 +82,8 @@ public class DaysOfWeek {
+ "}";
}
private DaysOfWeek(int firstDayOfWeek) {
@VisibleForTesting
DaysOfWeek(int firstDayOfWeek) {
if (firstDayOfWeek != SATURDAY && firstDayOfWeek != SUNDAY && firstDayOfWeek != MONDAY)
throw new IllegalArgumentException("Invalid first day of week: " + firstDayOfWeek);
DAYS[0] = firstDayOfWeek;

View File

@ -0,0 +1,74 @@
package com.philliphsu.clock2;
import org.junit.Test;
import static com.philliphsu.clock2.DaysOfWeek.*;
import static org.junit.Assert.assertEquals;
/**
* Created by Phillip Hsu on 6/1/2016.
*/
public class DaysOfWeekTest {
@Test
public void testSundayAsFirstDayOfWeek() {
DaysOfWeek days = new DaysOfWeek(SUNDAY);
assertEquals(days.weekDay(0), SUNDAY);
assertEquals(days.weekDay(1), MONDAY);
assertEquals(days.weekDay(2), TUESDAY);
assertEquals(days.weekDay(3), WEDNESDAY);
assertEquals(days.weekDay(4), THURSDAY);
assertEquals(days.weekDay(5), FRIDAY);
assertEquals(days.weekDay(6), SATURDAY);
assertEquals(days.positionOf(SUNDAY), 0);
assertEquals(days.positionOf(MONDAY), 1);
assertEquals(days.positionOf(TUESDAY), 2);
assertEquals(days.positionOf(WEDNESDAY), 3);
assertEquals(days.positionOf(THURSDAY), 4);
assertEquals(days.positionOf(FRIDAY), 5);
assertEquals(days.positionOf(SATURDAY), 6);
}
@Test
public void testSaturdayAsFirstDayOfWeek() {
DaysOfWeek days = new DaysOfWeek(SATURDAY);
assertEquals(days.weekDay(0), SATURDAY);
assertEquals(days.weekDay(1), SUNDAY);
assertEquals(days.weekDay(2), MONDAY);
assertEquals(days.weekDay(3), TUESDAY);
assertEquals(days.weekDay(4), WEDNESDAY);
assertEquals(days.weekDay(5), THURSDAY);
assertEquals(days.weekDay(6), FRIDAY);
assertEquals(days.positionOf(SUNDAY), 1);
assertEquals(days.positionOf(MONDAY), 2);
assertEquals(days.positionOf(TUESDAY), 3);
assertEquals(days.positionOf(WEDNESDAY), 4);
assertEquals(days.positionOf(THURSDAY), 5);
assertEquals(days.positionOf(FRIDAY), 6);
assertEquals(days.positionOf(SATURDAY), 0);
}
@Test
public void testMondayAsFirstDayOfWeek() {
DaysOfWeek days = new DaysOfWeek(MONDAY);
assertEquals(days.weekDay(0), MONDAY);
assertEquals(days.weekDay(1), TUESDAY);
assertEquals(days.weekDay(2), WEDNESDAY);
assertEquals(days.weekDay(3), THURSDAY);
assertEquals(days.weekDay(4), FRIDAY);
assertEquals(days.weekDay(5), SATURDAY);
assertEquals(days.weekDay(6), SUNDAY);
assertEquals(days.positionOf(SUNDAY), 6);
assertEquals(days.positionOf(MONDAY), 0);
assertEquals(days.positionOf(TUESDAY), 1);
assertEquals(days.positionOf(WEDNESDAY), 2);
assertEquals(days.positionOf(THURSDAY), 3);
assertEquals(days.positionOf(FRIDAY), 4);
assertEquals(days.positionOf(SATURDAY), 5);
System.out.println(days.toString());
}
}