1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.tv.data;
17 
18 import static com.android.tv.data.ChannelNumber.parseChannelNumber;
19 
20 import android.test.suitebuilder.annotation.SmallTest;
21 
22 import com.android.tv.testing.ComparableTester;
23 
24 import junit.framework.TestCase;
25 
26 /**
27  * Tests for {@link ChannelNumber}.
28  */
29 @SmallTest
30 public class ChannelNumberTest extends TestCase {
31 
32     /**
33      * Test method for {@link ChannelNumber#ChannelNumber()}.
34      */
testChannelNumber()35     public void testChannelNumber() {
36         assertChannelEquals(new ChannelNumber(), "", false, "");
37     }
38 
39     /**
40      * Test method for
41      * {@link com.android.tv.data.ChannelNumber#parseChannelNumber(java.lang.String)}.
42      */
testParseChannelNumber()43     public void testParseChannelNumber() {
44         assertNull(parseChannelNumber(""));
45         assertNull(parseChannelNumber(" "));
46         assertNull(parseChannelNumber("abcd12"));
47         assertNull(parseChannelNumber("12abcd"));
48         assertNull(parseChannelNumber("-12"));
49         assertChannelEquals(parseChannelNumber("1"), "1", false, "");
50         assertChannelEquals(parseChannelNumber("1234 4321"), "1234", true, "4321");
51         assertChannelEquals(parseChannelNumber("3-4"), "3", true, "4");
52         assertChannelEquals(parseChannelNumber("5.6"), "5", true, "6");
53     }
54 
55     /**
56      * Test method for {@link ChannelNumber#compareTo(com.android.tv.data.ChannelNumber)}.
57      */
testCompareTo()58     public void testCompareTo() {
59         new ComparableTester<ChannelNumber>()
60                 .addEquivalentGroup(parseChannelNumber("1"), parseChannelNumber("1"))
61                 .addEquivalentGroup(parseChannelNumber("2"))
62                 .addEquivalentGroup(parseChannelNumber("2 1"), parseChannelNumber("2.1"),
63                         parseChannelNumber("2-1"))
64                 .addEquivalentGroup(parseChannelNumber("2-2"))
65                 .addEquivalentGroup(parseChannelNumber("2-10"))
66                 .addEquivalentGroup(parseChannelNumber("3"))
67                 .addEquivalentGroup(parseChannelNumber("4"), parseChannelNumber("4 0"),
68                         parseChannelNumber("4.0"), parseChannelNumber("4-0"))
69                 .addEquivalentGroup(parseChannelNumber("10"))
70                 .addEquivalentGroup(parseChannelNumber("100"))
71                 .test();
72     }
73 
74     /**
75      * Test method for {@link ChannelNumber#compare(java.lang.String, java.lang.String)}.
76      */
testCompare()77     public void testCompare() {
78         // Only need to test nulls, the reset is tested by testCompareTo
79         assertEquals("compareTo(null,null)", 0, ChannelNumber.compare(null, null));
80         assertEquals("compareTo(1,1)", 0, ChannelNumber.compare("1", "1"));
81         assertEquals("compareTo(null,1)<0", true, ChannelNumber.compare(null, "1") < 0);
82         assertEquals("compareTo(mal-formatted,1)<0", true, ChannelNumber.compare("abcd", "1") < 0);
83         assertEquals("compareTo(mal-formatted,1)<0", true, ChannelNumber.compare(".4", "1") < 0);
84         assertEquals("compareTo(1,null)>0", true, ChannelNumber.compare("1", null) > 0);
85     }
86 
assertChannelEquals(ChannelNumber actual, String expectedMajor, boolean expectedHasDelimiter, String expectedMinor)87     private void assertChannelEquals(ChannelNumber actual, String expectedMajor,
88             boolean expectedHasDelimiter, String expectedMinor) {
89         assertEquals(actual + " major", actual.majorNumber, expectedMajor);
90         assertEquals(actual + " hasDelimiter", actual.hasDelimiter, expectedHasDelimiter);
91         assertEquals(actual + " minor", actual.minorNumber, expectedMinor);
92     }
93 
94 }
95