Added positionOf() method to DaysOfWeek
This commit is contained in:
parent
4de02ed353
commit
9aa47ccfbe
@ -3,6 +3,7 @@ package com.philliphsu.clock2;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -57,11 +58,21 @@ public class DaysOfWeek {
|
|||||||
return sAppContext.getString(LABELS_RES[weekDay]);
|
return sAppContext.getString(LABELS_RES[weekDay]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return the week day whose order is specified by {@code ordinalDay} */
|
/** @return the week day at {@code position} within the user-defined week */
|
||||||
public int weekDay(int ordinalDay) {
|
public int weekDay(int position) {
|
||||||
if (ordinalDay < 0 || ordinalDay > 6)
|
if (position < 0 || position > 6)
|
||||||
throw new ArrayIndexOutOfBoundsException("Ordinal day out of range");
|
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
|
@Override
|
||||||
@ -71,7 +82,8 @@ public class DaysOfWeek {
|
|||||||
+ "}";
|
+ "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private DaysOfWeek(int firstDayOfWeek) {
|
@VisibleForTesting
|
||||||
|
DaysOfWeek(int firstDayOfWeek) {
|
||||||
if (firstDayOfWeek != SATURDAY && firstDayOfWeek != SUNDAY && firstDayOfWeek != MONDAY)
|
if (firstDayOfWeek != SATURDAY && firstDayOfWeek != SUNDAY && firstDayOfWeek != MONDAY)
|
||||||
throw new IllegalArgumentException("Invalid first day of week: " + firstDayOfWeek);
|
throw new IllegalArgumentException("Invalid first day of week: " + firstDayOfWeek);
|
||||||
DAYS[0] = firstDayOfWeek;
|
DAYS[0] = firstDayOfWeek;
|
||||||
|
|||||||
74
app/src/test/java/com/philliphsu/clock2/DaysOfWeekTest.java
Normal file
74
app/src/test/java/com/philliphsu/clock2/DaysOfWeekTest.java
Normal 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user