diff options
Diffstat (limited to 'tests/unit/src/com/android/tv/dvr/DvrScheduleManagerTest.java')
-rw-r--r-- | tests/unit/src/com/android/tv/dvr/DvrScheduleManagerTest.java | 693 |
1 files changed, 0 insertions, 693 deletions
diff --git a/tests/unit/src/com/android/tv/dvr/DvrScheduleManagerTest.java b/tests/unit/src/com/android/tv/dvr/DvrScheduleManagerTest.java deleted file mode 100644 index 1c77aa0e..00000000 --- a/tests/unit/src/com/android/tv/dvr/DvrScheduleManagerTest.java +++ /dev/null @@ -1,693 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.tv.dvr; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import android.os.Build; -import android.support.test.filters.SdkSuppress; -import android.support.test.filters.SmallTest; -import android.test.MoreAsserts; -import android.util.Range; - -import com.android.tv.dvr.DvrScheduleManager.ConflictInfo; -import com.android.tv.dvr.data.ScheduledRecording; -import com.android.tv.testing.dvr.RecordingTestUtils; - -import org.junit.Test; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -/** Tests for {@link DvrScheduleManager} */ -@SmallTest -@SdkSuppress(minSdkVersion = Build.VERSION_CODES.N) -public class DvrScheduleManagerTest { - private static final String INPUT_ID = "input_id"; - - @Test - public void testGetConflictingSchedules_emptySchedule() { - List<ScheduledRecording> schedules = new ArrayList<>(); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 1)); - } - - @Test - public void testGetConflictingSchedules_noConflict() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 0L, 200L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 1)); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 0L, 100L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 100L, 200L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 0L, 100L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 100L, 200L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - } - - @Test - public void testGetConflictingSchedules_noTuner() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 0)); - - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 0L, 200L)); - assertEquals(schedules, DvrScheduleManager.getConflictingSchedules(schedules, 0)); - schedules.add(0, RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - ++priority, 0L, 100L)); - assertEquals(schedules, DvrScheduleManager.getConflictingSchedules(schedules, 0)); - } - - @Test - public void testGetConflictingSchedules_conflict() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 1)); - - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r3); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - ScheduledRecording r4 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r4); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - - ScheduledRecording r5 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r5); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - - ScheduledRecording r6 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 10L, 90L); - schedules.add(r6); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 4)); - - ScheduledRecording r7 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 110L, 190L); - schedules.add(r7); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 4)); - - ScheduledRecording r8 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 50L, 150L); - schedules.add(r8); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r7, r6, r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 4), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 5)); - } - - @Test - public void testGetConflictingSchedules_conflict2() { - // The case when there is a long schedule. - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 1000L); - schedules.add(r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 1)); - - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r3); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - } - - @Test - public void testGetConflictingSchedules_reverseOrder() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(0, r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 1)); - - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(0, r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(0, r3); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 2)); - - ScheduledRecording r4 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(0, r4); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - - ScheduledRecording r5 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(0, r5); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - - ScheduledRecording r6 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 10L, 90L); - schedules.add(0, r6); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 4)); - - ScheduledRecording r7 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 110L, 190L); - schedules.add(0, r7); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 4)); - - ScheduledRecording r8 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 50L, 150L); - schedules.add(0, r8); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r7, r6, r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 2), - r5, r4, r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 3), - r3, r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 4), - r1); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 5)); - } - - @Test - public void testGetConflictingSchedules_period1() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(10L, 20L))), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(110L, 120L))), r1); - } - - @Test - public void testGetConflictingSchedules_period2() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(10L, 20L))), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(110L, 120L))), r1); - } - - @Test - public void testGetConflictingSchedules_period3() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r2); - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r3); - ScheduledRecording r4 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r4); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(10L, 20L))), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(110L, 120L))), r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - Collections.singletonList(new Range<>(50L, 150L))), r2, r1); - List<Range<Long>> ranges = new ArrayList<>(); - ranges.add(new Range<>(10L, 20L)); - ranges.add(new Range<>(110L, 120L)); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1, - ranges), r2, r1); - } - - @Test - public void testGetConflictingSchedules_addSchedules1() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 100L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules( - Collections.singletonList( - ScheduledRecording.builder(INPUT_ID, ++channelId, 10L, 20L) - .setPriority(++priority).build()), - schedules, 1), r2, r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules( - Collections.singletonList( - ScheduledRecording.builder(INPUT_ID, ++channelId, 110L, 120L) - .setPriority(++priority).build()), - schedules, 1), r1); - } - - @Test - public void testGetConflictingSchedules_addSchedules2() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules( - Collections.singletonList( - ScheduledRecording.builder(INPUT_ID, ++channelId, 10L, 20L) - .setPriority(++priority).build()), - schedules, 1), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules( - Collections.singletonList( - ScheduledRecording.builder(INPUT_ID, ++channelId, 110L, 120L) - .setPriority(++priority).build()), - schedules, 1), r2, r1); - } - - @Test - public void testGetConflictingSchedules_addLowestPriority() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 400L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r2); - // Returning r1 even though r1 has the higher priority than the new one. That's because r1 - // starts at 0 and stops at 100, and the new one will be recorded successfully. - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules( - Collections.singletonList( - ScheduledRecording.builder(INPUT_ID, ++channelId, 200L, 300L) - .setPriority(0).build()), - schedules, 1), r1); - } - - @Test - public void testGetConflictingSchedules_sameChannel() { - long priority = 0; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(channelId, - ++priority, 0L, 200L)); - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(channelId, - ++priority, 0L, 200L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedules(schedules, 3)); - } - - @Test - public void testGetConflictingSchedule_startEarlyAndFail() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 200L, 300L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 400L); - schedules.add(r2); - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 200L); - schedules.add(r3); - // r2 starts recording and fails when r3 starts. r1 is recorded successfully. - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r2); - } - - @Test - public void testGetConflictingSchedule_startLate() { - long priority = 0; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 200L, 400L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 100L, 300L); - schedules.add(r2); - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r3); - // r2 and r1 are clipped. - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedules(schedules, 1), - r2, r1); - } - - @Test - public void testGetConflictingSchedulesForTune_canTune() { - // Can tune to the recorded channel if tuner count is 1. - long priority = 0; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(channelId, - ++priority, 0L, 200L)); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedulesForTune(INPUT_ID, - channelId, 0L, priority + 1, schedules, 1)); - } - - @Test - public void testGetConflictingSchedulesForTune_cannotTune() { - // Can't tune to a channel if other channel is recording and tuner count is 1. - long priority = 0; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - schedules.add(RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(channelId, - ++priority, 0L, 200L)); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForTune( - INPUT_ID, channelId + 1, 0L, priority + 1, schedules, 1), schedules.get(0)); - } - - @Test - public void testGetConflictingSchedulesForWatching_otherChannels() { - // The other channels are to be recorded. - long priority = 0; - long channelToWatch = 1; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r2); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 3)); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 2), r1); - } - - @Test - public void testGetConflictingSchedulesForWatching_sameChannel1() { - long priority = 0; - long channelToWatch = 1; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r2); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 2)); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 1), r2); - } - - @Test - public void testGetConflictingSchedulesForWatching_sameChannel2() { - long priority = 0; - long channelToWatch = 1; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r2); - MoreAsserts.assertEmpty(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 2)); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 1), r1); - } - - @Test - public void testGetConflictingSchedulesForWatching_sameChannelConflict1() { - long priority = 0; - long channelToWatch = 1; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r2); - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r3); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 3), r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 2), r2); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 1), r2, r1); - } - - @Test - public void testGetConflictingSchedulesForWatching_sameChannelConflict2() { - long priority = 0; - long channelToWatch = 1; - long channelId = 1; - List<ScheduledRecording> schedules = new ArrayList<>(); - ScheduledRecording r1 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r1); - ScheduledRecording r2 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - channelToWatch, ++priority, 0L, 200L); - schedules.add(r2); - ScheduledRecording r3 = RecordingTestUtils.createTestRecordingWithPriorityAndPeriod( - ++channelId, ++priority, 0L, 200L); - schedules.add(r3); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 3), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 2), r1); - MoreAsserts.assertContentsInOrder(DvrScheduleManager.getConflictingSchedulesForWatching( - INPUT_ID, channelToWatch, 0L, ++priority, schedules, 1), r3, r1); - } - - @Test - public void testPartiallyConflictingSchedules() { - long priority = 100; - long channelId = 0; - List<ScheduledRecording> schedules = new ArrayList<>(Arrays.asList( - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 0L, 400L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 0L, 200L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 200L, 500L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 400L, 600L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 700L, 800L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 600L, 900L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 800L, 900L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 800L, 900L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 750L, 850L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 300L, 450L), - RecordingTestUtils.createTestRecordingWithPriorityAndPeriod(++channelId, - --priority, 50L, 900L) - )); - List<ConflictInfo> conflicts = DvrScheduleManager.getConflictingSchedulesInfo(schedules, 1); - - assertNotInList(schedules.get(0), conflicts); - assertFullConflict(schedules.get(1), conflicts); - assertPartialConflict(schedules.get(2), conflicts); - assertPartialConflict(schedules.get(3), conflicts); - assertNotInList(schedules.get(4), conflicts); - assertPartialConflict(schedules.get(5), conflicts); - assertNotInList(schedules.get(6), conflicts); - assertFullConflict(schedules.get(7), conflicts); - assertFullConflict(schedules.get(8), conflicts); - assertFullConflict(schedules.get(9), conflicts); - assertFullConflict(schedules.get(10), conflicts); - - conflicts = DvrScheduleManager.getConflictingSchedulesInfo(schedules, 2); - - assertNotInList(schedules.get(0), conflicts); - assertNotInList(schedules.get(1), conflicts); - assertNotInList(schedules.get(2), conflicts); - assertNotInList(schedules.get(3), conflicts); - assertNotInList(schedules.get(4), conflicts); - assertNotInList(schedules.get(5), conflicts); - assertNotInList(schedules.get(6), conflicts); - assertFullConflict(schedules.get(7), conflicts); - assertFullConflict(schedules.get(8), conflicts); - assertFullConflict(schedules.get(9), conflicts); - assertPartialConflict(schedules.get(10), conflicts); - - conflicts = DvrScheduleManager.getConflictingSchedulesInfo(schedules, 3); - - assertNotInList(schedules.get(0), conflicts); - assertNotInList(schedules.get(1), conflicts); - assertNotInList(schedules.get(2), conflicts); - assertNotInList(schedules.get(3), conflicts); - assertNotInList(schedules.get(4), conflicts); - assertNotInList(schedules.get(5), conflicts); - assertNotInList(schedules.get(6), conflicts); - assertNotInList(schedules.get(7), conflicts); - assertPartialConflict(schedules.get(8), conflicts); - assertNotInList(schedules.get(9), conflicts); - assertPartialConflict(schedules.get(10), conflicts); - } - - private void assertNotInList(ScheduledRecording schedule, List<ConflictInfo> conflicts) { - for (ConflictInfo conflictInfo : conflicts) { - if (conflictInfo.schedule.equals(schedule)) { - fail(schedule + " conflicts with others."); - } - } - } - - private void assertPartialConflict(ScheduledRecording schedule, List<ConflictInfo> conflicts) { - for (ConflictInfo conflictInfo : conflicts) { - if (conflictInfo.schedule.equals(schedule)) { - if (conflictInfo.partialConflict) { - return; - } else { - fail(schedule + " fully conflicts with others."); - } - } - } - fail(schedule + " doesn't conflict"); - } - - private void assertFullConflict(ScheduledRecording schedule, List<ConflictInfo> conflicts) { - for (ConflictInfo conflictInfo : conflicts) { - if (conflictInfo.schedule.equals(schedule)) { - if (!conflictInfo.partialConflict) { - return; - } else { - fail(schedule + " partially conflicts with others."); - } - } - } - fail(schedule + " doesn't conflict"); - } -}
\ No newline at end of file |