aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java')
-rw-r--r--tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java219
1 files changed, 133 insertions, 86 deletions
diff --git a/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java b/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
index 7b8e256d..39e6e9c5 100644
--- a/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
@@ -16,23 +16,22 @@
package com.android.tv.recommendation;
+import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import android.support.test.filters.SmallTest;
-import android.test.MoreAsserts;
-
+import android.support.test.runner.AndroidJUnit4;
import com.android.tv.data.Program;
import com.android.tv.recommendation.RoutineWatchEvaluator.ProgramTime;
-
-import org.junit.Test;
-
-import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
-import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+/** Tests for {@link RoutineWatchEvaluator}. */
@SmallTest
+@RunWith(AndroidJUnit4.class)
public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEvaluator> {
private static class ScoredItem implements Comparable<ScoredItem> {
private final String mBase;
@@ -67,13 +66,23 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
@Test
public void testSplitTextToWords() {
- assertSplitTextToWords("");
- assertSplitTextToWords("Google", "Google");
- assertSplitTextToWords("The Big Bang Theory", "The", "Big", "Bang", "Theory");
- assertSplitTextToWords("Hello, world!", "Hello", "world");
- assertSplitTextToWords("Adam's Rib", "Adam's", "Rib");
- assertSplitTextToWords("G.I. Joe", "G.I", "Joe");
- assertSplitTextToWords("A.I.", "A.I");
+ assertThat(RoutineWatchEvaluator.splitTextToWords("")).containsExactly().inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("Google"))
+ .containsExactly("Google")
+ .inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("The Big Bang Theory"))
+ .containsExactly("The", "Big", "Bang", "Theory")
+ .inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("Hello, world!"))
+ .containsExactly("Hello", "world")
+ .inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("Adam's Rib"))
+ .containsExactly("Adam's", "Rib")
+ .inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("G.I. Joe"))
+ .containsExactly("G.I", "Joe")
+ .inOrder();
+ assertThat(RoutineWatchEvaluator.splitTextToWords("A.I.")).containsExactly("A.I").inOrder();
}
@Test
@@ -102,7 +111,6 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
assertEqualScores(0.0, RoutineWatchEvaluator.calculateTitleMatchScore(" ", "foo"));
}
-
@Test
public void testCalculateTitleMatchScore_null() {
assertEqualScores(0.0, RoutineWatchEvaluator.calculateTitleMatchScore(null, null));
@@ -113,11 +121,15 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
@Test
public void testCalculateTitleMatchScore_longerMatchIsBetter() {
String base = "foo bar baz";
- assertInOrder(
- score(base, ""),
- score(base, "bar"),
- score(base, "foo bar"),
- score(base, "foo bar baz"));
+ assertThat(
+ new ScoredItem[] {
+ score(base, ""),
+ score(base, "bar"),
+ score(base, "foo bar"),
+ score(base, "foo bar baz")
+ })
+ .asList()
+ .isOrdered();
}
@Test
@@ -128,116 +140,154 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
int tomorrowDayOfWeek = (todayDayOfWeek % 7) + 1;
// Today 00:00 - 01:00.
- ProgramTime programTimeToday0000_0100 = ProgramTime.createFromProgram(
- createDummyProgram(todayAtHourMin(0, 0), TimeUnit.HOURS.toMillis(1)));
- assertProgramTime(todayDayOfWeek, hourMinuteToSec(0, 0), hourMinuteToSec(1, 0),
- programTimeToday0000_0100);
+ ProgramTime programTimeToday0000to0100 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(todayAtHourMin(0, 0), TimeUnit.HOURS.toMillis(1)));
+ assertProgramTime(
+ todayDayOfWeek,
+ hourMinuteToSec(0, 0),
+ hourMinuteToSec(1, 0),
+ programTimeToday0000to0100);
// Today 23:30 - 24:30.
- ProgramTime programTimeToday2330_2430 = ProgramTime.createFromProgram(
- createDummyProgram(todayAtHourMin(23, 30), TimeUnit.HOURS.toMillis(1)));
- assertProgramTime(todayDayOfWeek, hourMinuteToSec(23, 30), hourMinuteToSec(24, 30),
- programTimeToday2330_2430);
+ ProgramTime programTimeToday2330to2430 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(todayAtHourMin(23, 30), TimeUnit.HOURS.toMillis(1)));
+ assertProgramTime(
+ todayDayOfWeek,
+ hourMinuteToSec(23, 30),
+ hourMinuteToSec(24, 30),
+ programTimeToday2330to2430);
// Tomorrow 00:00 - 01:00.
- ProgramTime programTimeTomorrow0000_0100 = ProgramTime.createFromProgram(
- createDummyProgram(tomorrowAtHourMin(0, 0), TimeUnit.HOURS.toMillis(1)));
- assertProgramTime(tomorrowDayOfWeek, hourMinuteToSec(0, 0), hourMinuteToSec(1, 0),
- programTimeTomorrow0000_0100);
+ ProgramTime programTimeTomorrow0000to0100 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(tomorrowAtHourMin(0, 0), TimeUnit.HOURS.toMillis(1)));
+ assertProgramTime(
+ tomorrowDayOfWeek,
+ hourMinuteToSec(0, 0),
+ hourMinuteToSec(1, 0),
+ programTimeTomorrow0000to0100);
// Tomorrow 23:30 - 24:30.
- ProgramTime programTimeTomorrow2330_2430 = ProgramTime.createFromProgram(
- createDummyProgram(tomorrowAtHourMin(23, 30), TimeUnit.HOURS.toMillis(1)));
- assertProgramTime(tomorrowDayOfWeek, hourMinuteToSec(23, 30), hourMinuteToSec(24, 30),
- programTimeTomorrow2330_2430);
+ ProgramTime programTimeTomorrow2330to2430 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(tomorrowAtHourMin(23, 30), TimeUnit.HOURS.toMillis(1)));
+ assertProgramTime(
+ tomorrowDayOfWeek,
+ hourMinuteToSec(23, 30),
+ hourMinuteToSec(24, 30),
+ programTimeTomorrow2330to2430);
// Today 18:00 - Tomorrow 12:00.
- ProgramTime programTimeToday1800_3600 = ProgramTime.createFromProgram(
- createDummyProgram(todayAtHourMin(18, 0), TimeUnit.HOURS.toMillis(18)));
+ ProgramTime programTimeToday1800to3600 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(todayAtHourMin(18, 0), TimeUnit.HOURS.toMillis(18)));
// Maximum duration of ProgramTime is 12 hours.
// So, this program looks like it ends at Tomorrow 06:00 (30:00).
- assertProgramTime(todayDayOfWeek, hourMinuteToSec(18, 0), hourMinuteToSec(30, 0),
- programTimeToday1800_3600);
+ assertProgramTime(
+ todayDayOfWeek,
+ hourMinuteToSec(18, 0),
+ hourMinuteToSec(30, 0),
+ programTimeToday1800to3600);
}
@Test
public void testCalculateOverlappedIntervalScore() {
// Today 21:00 - 24:00.
- ProgramTime programTimeToday2100_2400 = ProgramTime.createFromProgram(
- createDummyProgram(todayAtHourMin(21, 0), TimeUnit.HOURS.toMillis(3)));
+ ProgramTime programTimeToday2100to2400 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(todayAtHourMin(21, 0), TimeUnit.HOURS.toMillis(3)));
// Today 22:00 - 01:00.
- ProgramTime programTimeToday2200_0100 = ProgramTime.createFromProgram(
- createDummyProgram(todayAtHourMin(22, 0), TimeUnit.HOURS.toMillis(3)));
+ ProgramTime programTimeToday2200to0100 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(todayAtHourMin(22, 0), TimeUnit.HOURS.toMillis(3)));
// Tomorrow 00:00 - 03:00.
- ProgramTime programTimeTomorrow0000_0300 = ProgramTime.createFromProgram(
- createDummyProgram(tomorrowAtHourMin(0, 0), TimeUnit.HOURS.toMillis(3)));
+ ProgramTime programTimeTomorrow0000to0300 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(tomorrowAtHourMin(0, 0), TimeUnit.HOURS.toMillis(3)));
// Tomorrow 20:00 - Tomorrow 23:00.
- ProgramTime programTimeTomorrow2000_2300 = ProgramTime.createFromProgram(
- createDummyProgram(tomorrowAtHourMin(20, 0), TimeUnit.HOURS.toMillis(3)));
+ ProgramTime programTimeTomorrow2000to2300 =
+ ProgramTime.createFromProgram(
+ createDummyProgram(tomorrowAtHourMin(20, 0), TimeUnit.HOURS.toMillis(3)));
// Check intersection time and commutative law in all cases.
int oneHourInSec = hourMinuteToSec(1, 0);
- assertOverlappedIntervalScore(2 * oneHourInSec, true, programTimeToday2100_2400,
- programTimeToday2200_0100);
- assertOverlappedIntervalScore(0, false, programTimeToday2100_2400,
- programTimeTomorrow0000_0300);
- assertOverlappedIntervalScore(2 * oneHourInSec, false, programTimeToday2100_2400,
- programTimeTomorrow2000_2300);
- assertOverlappedIntervalScore(oneHourInSec, true, programTimeToday2200_0100,
- programTimeTomorrow0000_0300);
- assertOverlappedIntervalScore(oneHourInSec, false, programTimeToday2200_0100,
- programTimeTomorrow2000_2300);
- assertOverlappedIntervalScore(0, false, programTimeTomorrow0000_0300,
- programTimeTomorrow2000_2300);
+ assertOverlappedIntervalScore(
+ 2 * oneHourInSec, true, programTimeToday2100to2400, programTimeToday2200to0100);
+ assertOverlappedIntervalScore(
+ 0, false, programTimeToday2100to2400, programTimeTomorrow0000to0300);
+ assertOverlappedIntervalScore(
+ 2 * oneHourInSec, false, programTimeToday2100to2400, programTimeTomorrow2000to2300);
+ assertOverlappedIntervalScore(
+ oneHourInSec, true, programTimeToday2200to0100, programTimeTomorrow0000to0300);
+ assertOverlappedIntervalScore(
+ oneHourInSec, false, programTimeToday2200to0100, programTimeTomorrow2000to2300);
+ assertOverlappedIntervalScore(
+ 0, false, programTimeTomorrow0000to0300, programTimeTomorrow2000to2300);
}
@Test
public void testGetTimeOfDayInSec() {
// Time was set as 00:00:00. So, getTimeOfDay must returns 0 (= 0 * 60 * 60 + 0 * 60 + 0).
- assertEquals("TimeOfDayInSec", hourMinuteToSec(0, 0),
+ assertEquals(
+ "TimeOfDayInSec",
+ hourMinuteToSec(0, 0),
RoutineWatchEvaluator.getTimeOfDayInSec(todayAtHourMin(0, 0)));
// Time was set as 23:59:59. So, getTimeOfDay must returns 23 * 60 + 60 + 59 * 60 + 59.
- assertEquals("TimeOfDayInSec", hourMinuteSecondToSec(23, 59, 59),
+ assertEquals(
+ "TimeOfDayInSec",
+ hourMinuteSecondToSec(23, 59, 59),
RoutineWatchEvaluator.getTimeOfDayInSec(todayAtHourMinSec(23, 59, 59)));
}
- private void assertSplitTextToWords(String text, String... words) {
- List<String> wordList = RoutineWatchEvaluator.splitTextToWords(text);
- MoreAsserts.assertContentsInOrder(wordList, words);
- }
-
- private void assertMaximumMatchedWordSequenceLength(int expectedLength, String text1,
- String text2) {
+ private void assertMaximumMatchedWordSequenceLength(
+ int expectedLength, String text1, String text2) {
List<String> wordList1 = RoutineWatchEvaluator.splitTextToWords(text1);
List<String> wordList2 = RoutineWatchEvaluator.splitTextToWords(text2);
- assertEquals("MaximumMatchedWordSequenceLength", expectedLength,
+ assertEquals(
+ "MaximumMatchedWordSequenceLength",
+ expectedLength,
RoutineWatchEvaluator.calculateMaximumMatchedWordSequenceLength(
wordList1, wordList2));
- assertEquals("MaximumMatchedWordSequenceLength", expectedLength,
+ assertEquals(
+ "MaximumMatchedWordSequenceLength",
+ expectedLength,
RoutineWatchEvaluator.calculateMaximumMatchedWordSequenceLength(
wordList2, wordList1));
}
- private void assertProgramTime(int expectedWeekDay, int expectedStartTimeOfDayInSec,
- int expectedEndTimeOfDayInSec, ProgramTime actualProgramTime) {
+ private void assertProgramTime(
+ int expectedWeekDay,
+ int expectedStartTimeOfDayInSec,
+ int expectedEndTimeOfDayInSec,
+ ProgramTime actualProgramTime) {
assertEquals("Weekday", expectedWeekDay, actualProgramTime.weekDay);
- assertEquals("StartTimeOfDayInSec", expectedStartTimeOfDayInSec,
+ assertEquals(
+ "StartTimeOfDayInSec",
+ expectedStartTimeOfDayInSec,
actualProgramTime.startTimeOfDayInSec);
- assertEquals("EndTimeOfDayInSec", expectedEndTimeOfDayInSec,
+ assertEquals(
+ "EndTimeOfDayInSec",
+ expectedEndTimeOfDayInSec,
actualProgramTime.endTimeOfDayInSec);
}
- private void assertOverlappedIntervalScore(int expectedSeconds, boolean overlappedOnSameDay,
- ProgramTime t1, ProgramTime t2) {
+ private void assertOverlappedIntervalScore(
+ int expectedSeconds, boolean overlappedOnSameDay, ProgramTime t1, ProgramTime t2) {
double score = expectedSeconds;
if (!overlappedOnSameDay) {
score *= RoutineWatchEvaluator.MULTIPLIER_FOR_UNMATCHED_DAY_OF_WEEK;
}
// Two tests for testing commutative law.
- assertEqualScores("OverlappedIntervalScore", score,
+ assertEqualScores(
+ "OverlappedIntervalScore",
+ score,
RoutineWatchEvaluator.calculateOverlappedIntervalScore(t1, t2));
- assertEqualScores("OverlappedIntervalScore", score,
+ assertEqualScores(
+ "OverlappedIntervalScore",
+ score,
RoutineWatchEvaluator.calculateOverlappedIntervalScore(t2, t1));
}
@@ -270,12 +320,9 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
private Program createDummyProgram(Calendar startTime, long programDurationMs) {
long startTimeMs = startTime.getTimeInMillis();
- return new Program.Builder().setStartTimeUtcMillis(startTimeMs)
- .setEndTimeUtcMillis(startTimeMs + programDurationMs).build();
- }
-
- private static <T> void assertInOrder(T... items) {
- TreeSet<T> copy = new TreeSet<>(Arrays.asList(items));
- MoreAsserts.assertContentsInOrder(copy, items);
+ return new Program.Builder()
+ .setStartTimeUtcMillis(startTimeMs)
+ .setEndTimeUtcMillis(startTimeMs + programDurationMs)
+ .build();
}
}