10a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe/*
20a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * Copyright (C) 2016 The Android Open Source Project
30a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe *
40a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * Licensed under the Apache License, Version 2.0 (the "License");
50a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * you may not use this file except in compliance with the License.
60a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * You may obtain a copy of the License at
70a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe *
80a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe *      http://www.apache.org/licenses/LICENSE-2.0
90a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe *
100a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * Unless required by applicable law or agreed to in writing, software
110a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * distributed under the License is distributed on an "AS IS" BASIS,
120a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * See the License for the specific language governing permissions and
140a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe * limitations under the License.
150a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe */
160a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawepackage com.android.internal.telephony;
170a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
180a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport android.telephony.TelephonyHistogram;
190a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport android.test.suitebuilder.annotation.SmallTest;
200a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
210a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport org.junit.After;
220a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport org.junit.Before;
230a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport org.junit.Test;
240a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport org.junit.Assert;
250a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
260a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padaweimport static org.junit.Assert.*;
270a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
280a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawepublic class TelephonyHistogramTest {
290a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    private TelephonyHistogram mHistogram = null;
300a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
310a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @After
320a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    public void tearDown() throws Exception {
330a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram = null;
340a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    }
350a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
360a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @Before
370a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    public void setUp() throws Exception {
380a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram = new TelephonyHistogram(TelephonyHistogram.TELEPHONY_CATEGORY_RIL, 1, 3);
390a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    }
400a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
410a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @Test
420a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @SmallTest
430a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    public void testTelephonyHistogramConstructor() {
440a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(TelephonyHistogram.TELEPHONY_CATEGORY_RIL, mHistogram.getCategory());
450a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(1, mHistogram.getId());
460a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(Integer.MAX_VALUE, mHistogram.getMinTime());
470a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(0, mHistogram.getMaxTime());
480a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(0, mHistogram.getAverageTime());
490a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(0, mHistogram.getSampleCount());
500a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(3, mHistogram.getBucketCount());
510a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
520a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        // Test to verify that an exception is thrown when bucketCount <= 1
530a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram = null;
540a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        try {
550a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe            mHistogram = new TelephonyHistogram(TelephonyHistogram.TELEPHONY_CATEGORY_RIL, 1, 1);
560a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe            Assert.fail("TelephonyHistogram should throw exception for bucketCount <= 1");
570a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        } catch (IllegalArgumentException ex) {
580a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe            mHistogram = new TelephonyHistogram(TelephonyHistogram.TELEPHONY_CATEGORY_RIL, 1, 3);
590a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        }
600a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    }
610a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
620a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @Test
630a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    @SmallTest
640a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    public void testAddTimeTaken() {
650a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        // Test when addTimeTaken is called less than 10 times
660a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(10);
670a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(20);
680a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(30);
690a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(40);
700a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(50);
710a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(10,mHistogram.getMinTime());
720a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(50, mHistogram.getMaxTime());
730a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(5, mHistogram.getSampleCount());
740a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(30, mHistogram.getAverageTime());
750a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertArrayEquals(new int[]{23, 36}, mHistogram.getBucketEndPoints());
760a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertArrayEquals(new int[]{2, 1, 2}, mHistogram.getBucketCounters());
770a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe
780a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        // Test when addTimeTaken is called more than 10 times
790a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(60);
800a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(70);
810a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(80);
820a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(90);
830a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(100);
840a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(10);
850a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        mHistogram.addTimeTaken(100);
860a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(10,mHistogram.getMinTime());
870a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(100, mHistogram.getMaxTime());
880a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(12, mHistogram.getSampleCount());
890a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertEquals(54, mHistogram.getAverageTime());
900a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertArrayEquals(new int[]{40, 70}, mHistogram.getBucketEndPoints());
910a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe        assertArrayEquals(new int[]{5, 3, 4}, mHistogram.getBucketCounters());
920a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe    }
930a22399222ad0874fc68adc34d7622b6e3d6da6fSanket Padawe}
94