11abddd9f6225298066094e20a6c29061b6af4590Nick Chalko/*
21abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Copyright (C) 2015 The Android Open Source Project
31abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
41abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
51abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * you may not use this file except in compliance with the License.
61abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * You may obtain a copy of the License at
71abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
81abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
91abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
101abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Unless required by applicable law or agreed to in writing, software
111abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
121abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * See the License for the specific language governing permissions and
141abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * limitations under the License
151abddd9f6225298066094e20a6c29061b6af4590Nick Chalko */
161abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
171abddd9f6225298066094e20a6c29061b6af4590Nick Chalkopackage com.android.tv.dvr;
181abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
191abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport android.test.suitebuilder.annotation.SmallTest;
201abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
211abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport com.android.tv.testing.dvr.RecordingTestUtils;
221abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
231abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport junit.framework.TestCase;
241abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
251abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport java.util.ArrayList;
261abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport java.util.List;
271abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
281abddd9f6225298066094e20a6c29061b6af4590Nick Chalko/**
2948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * Tests for {@link DvrDataManagerImpl}
301abddd9f6225298066094e20a6c29061b6af4590Nick Chalko */
311abddd9f6225298066094e20a6c29061b6af4590Nick Chalko@SmallTest
321abddd9f6225298066094e20a6c29061b6af4590Nick Chalkopublic class DvrDataManagerImplTest extends TestCase {
3348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho    private static final int CHANNEL_ID = 273;
3448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho
351abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public void testGetNextScheduledStartTimeAfter() throws Exception {
361abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        long id = 1;
3748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        List<ScheduledRecording> scheduledRecordings = new ArrayList<>();
3848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 0L, DvrDataManager.NEXT_START_TIME_NOT_FOUND);
3948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
4048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 10L, 20L));
4148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 9L, 10L);
4248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 10L, DvrDataManager.NEXT_START_TIME_NOT_FOUND);
4348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
4448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 20L, 30L));
4548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 9L, 10L);
4648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 10L, 20L);
4748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 20L, DvrDataManager.NEXT_START_TIME_NOT_FOUND);
4848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
4948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 30L, 40L));
5048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 9L, 10L);
5148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 10L, 20L);
5248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 20L, 30L);
5348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 30L, DvrDataManager.NEXT_START_TIME_NOT_FOUND);
5448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.clear();
5548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
5648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 10L, 20L));
5748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
5848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 10L, 20L));
5948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        scheduledRecordings.add(RecordingTestUtils
6048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                .createTestRecordingWithIdAndPeriod(id++, CHANNEL_ID, 10L, 20L));
6148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 9L, 10L);
6248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho        assertNextStartTime(scheduledRecordings, 10L, DvrDataManager.NEXT_START_TIME_NOT_FOUND);
631abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
641abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
6548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho    private void assertNextStartTime(List<ScheduledRecording> scheduledRecordings, long startTime, long expected) {
661abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        assertEquals("getNextScheduledStartTimeAfter()", expected,
6748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho                DvrDataManagerImpl.getNextStartTimeAfter(scheduledRecordings, startTime));
681abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
691abddd9f6225298066094e20a6c29061b6af4590Nick Chalko}