17aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu/*
27aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * Copyright 2017 The Android Open Source Project
37aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu *
47aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * Licensed under the Apache License, Version 2.0 (the "License");
57aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * you may not use this file except in compliance with the License.
67aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * You may obtain a copy of the License at
77aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu *
87aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu *      http://www.apache.org/licenses/LICENSE-2.0
97aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu *
107aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * Unless required by applicable law or agreed to in writing, software
117aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * distributed under the License is distributed on an "AS IS" BASIS,
127aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * See the License for the specific language governing permissions and
147aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu * limitations under the License.
157aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu */
167aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
177aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yupackage com.android.internal.telephony;
187aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
197aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.os.Parcel;
207aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.telephony.CellIdentity;
217aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.telephony.CellIdentityCdma;
227aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.telephony.CellIdentityLte;
237aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.test.AndroidTestCase;
247aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yuimport android.test.suitebuilder.annotation.SmallTest;
257aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
267aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yupublic class CellIdentityTest extends AndroidTestCase {
277aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
287aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Cell identity ranges from 0 to 268435456.
297aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int CI = 268435456;
307aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Physical cell id ranges from 0 to 503.
317aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int PCI = 503;
327aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Tracking area code ranges from 0 to 65535.
337aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int TAC = 65535;
347aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Absolute RF Channel Number ranges from 0 to 262140.
357aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int EARFCN = 262140;
3681b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach    private static final int BANDWIDTH = 5000;  // kHz
377aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int MCC = 120;
387aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int MNC = 260;
397aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final String MCC_STR = "120";
407aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final String MNC_STR = "260";
417aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final String ALPHA_LONG = "long";
427aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final String ALPHA_SHORT = "short";
437aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
447aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Network Id ranges from 0 to 65535.
457aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int NETWORK_ID  = 65535;
467aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // CDMA System Id ranges from 0 to 32767
477aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int SYSTEM_ID = 32767;
487aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Base Station Id ranges from 0 to 65535
497aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int BASESTATION_ID = 65535;
507aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Longitude ranges from -2592000 to 2592000.
517aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int LONGITUDE = 2592000;
527aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    // Latitude ranges from -1296000 to 1296000.
537aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    private static final int LATITUDE = 1296000;
547aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
557aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    @SmallTest
567aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    public void testEquals() {
577aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        CellIdentity ciA = new CellIdentityLte(
5881b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                CI, PCI, TAC, EARFCN, BANDWIDTH, MCC_STR, MNC_STR, ALPHA_LONG, ALPHA_SHORT);
597aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        CellIdentity ciB = new CellIdentityLte(
6081b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                CI, PCI, TAC, EARFCN, BANDWIDTH, MCC_STR, MNC_STR, ALPHA_LONG, ALPHA_SHORT);
617aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
627aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        assertTrue(ciA.equals(ciB));
637aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
6481b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach        ciA = new CellIdentityLte(CI, PCI, TAC, EARFCN, BANDWIDTH, null, null, ALPHA_LONG,
6581b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                ALPHA_SHORT);
6681b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach        ciB = new CellIdentityLte(CI, PCI, TAC, EARFCN, BANDWIDTH, null, null, ALPHA_LONG,
6781b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                ALPHA_SHORT);
687aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
697aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        assertTrue(ciA.equals(ciB));
707aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
7181b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach        ciA = new CellIdentityLte(CI, PCI, TAC, EARFCN, BANDWIDTH, MCC_STR, null, ALPHA_LONG,
7281b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                ALPHA_SHORT);
7381b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach        ciB = new CellIdentityLte(CI, PCI, TAC, EARFCN, BANDWIDTH, null, null, ALPHA_LONG,
7481b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                ALPHA_SHORT);
757aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
767aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        assertFalse(ciA.equals(ciB));
777aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    }
787aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
797aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    @SmallTest
807aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    public void testParcel() {
8181b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach        CellIdentity ci = new CellIdentityLte(CI, PCI, TAC, EARFCN, BANDWIDTH, MCC_STR, MNC_STR,
8281b90daac5f0e09da0ea83327b8f31976194aadeEric Schwarzenbach                ALPHA_LONG, ALPHA_SHORT);
837aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
847aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        Parcel p = Parcel.obtain();
857aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        ci.writeToParcel(p, 0);
867aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        p.setDataPosition(0);
877aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
887aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        CellIdentity newCi = CellIdentity.CREATOR.createFromParcel(p);
897aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        assertEquals(ci, newCi);
907aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
917aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        ci = new CellIdentityCdma(NETWORK_ID, SYSTEM_ID, BASESTATION_ID, LONGITUDE, LATITUDE,
927aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu                        ALPHA_LONG, ALPHA_SHORT);
937aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
947aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        p = Parcel.obtain();
957aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        ci.writeToParcel(p, 0);
967aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        p.setDataPosition(0);
977aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu
987aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        newCi = CellIdentity.CREATOR.createFromParcel(p);
997aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu        assertEquals(ci, newCi);
1007aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu    }
1017aa0254d5d8f08163b3702a2a1c9602366f568d8Jack Yu}
102