12e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko/*
22e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * Copyright (C) 2015 The Android Open Source Project
32e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko *
42e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
52e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * you may not use this file except in compliance with the License.
62e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * You may obtain a copy of the License at
72e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko *
82e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
92e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko *
102e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * Unless required by applicable law or agreed to in writing, software
112e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
122e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * See the License for the specific language governing permissions and
142e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * limitations under the License.
152e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko */
162e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
172e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalkopackage com.android.tv.data;
182e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static android.support.test.InstrumentationRegistry.getTargetContext;
206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static org.junit.Assert.assertEquals;
216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static org.junit.Assert.assertNotNull;
226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static org.junit.Assert.assertNull;
236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static org.junit.Assert.assertTrue;
246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko
252e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalkoimport android.media.tv.TvContract.Programs.Genres;
262e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalkoimport android.os.Build;
2765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.test.filters.SmallTest;
286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko
296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport org.junit.Test;
302e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
312e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko/**
322e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko * Tests for {@link Channel}.
332e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko */
342e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko@SmallTest
356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopublic class GenreItemTest {
362e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    private static final String INVALID_GENRE = "INVALID GENRE";
372e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko    @Test
392e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    public void testGetLabels() {
402e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        // Checks if no exception is thrown.
416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko        GenreItems.getLabels(getTargetContext());
422e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    }
432e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
446ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko    @Test
452e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    public void testGetCanonicalGenre() {
462e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        int count = GenreItems.getGenreCount();
472e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertNull(GenreItems.getCanonicalGenre(GenreItems.ID_ALL_CHANNELS));
482e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        for (int i = 1; i < count; ++i) {
492e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertNotNull(GenreItems.getCanonicalGenre(i));
502e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        }
512e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    }
522e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko    @Test
542e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    public void testGetId_base() {
552e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        int count = GenreItems.getGenreCount();
562e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(null));
572e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(INVALID_GENRE));
582e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.FAMILY_KIDS), 1, count - 1);
592e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.SPORTS), 1, count - 1);
602e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.SHOPPING), 1, count - 1);
612e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.MOVIES), 1, count - 1);
622e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.COMEDY), 1, count - 1);
632e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.TRAVEL), 1, count - 1);
642e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.DRAMA), 1, count - 1);
652e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.EDUCATION), 1, count - 1);
662e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.ANIMAL_WILDLIFE), 1, count - 1);
672e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.NEWS), 1, count - 1);
682e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertInRange(GenreItems.getId(Genres.GAMING), 1, count - 1);
692e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    }
702e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
716ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko    @Test
722e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    public void testGetId_lmp_mr1() {
732e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
742e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.ARTS));
752e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.ENTERTAINMENT));
762e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.LIFE_STYLE));
772e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.MUSIC));
782e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.PREMIER));
792e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertEquals(GenreItems.ID_ALL_CHANNELS, GenreItems.getId(Genres.TECH_SCIENCE));
802e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        } else {
812e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            int count = GenreItems.getGenreCount();
822e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.ARTS), 1, count - 1);
832e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.ENTERTAINMENT), 1, count - 1);
842e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.LIFE_STYLE), 1, count - 1);
852e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.MUSIC), 1, count - 1);
862e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.PREMIER), 1, count - 1);
872e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko            assertInRange(GenreItems.getId(Genres.TECH_SCIENCE), 1, count - 1);
882e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        }
892e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    }
902e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko
912e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    private void assertInRange(int value, int lower, int upper) {
922e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko        assertTrue(value >= lower && value <= upper);
932e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko    }
942e1279b8bbe0603fb4399b25b73121bed5953c46Nick Chalko}
95