/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.internal.telephony.dataconnection;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.dataconnection.ApnSetting;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
public class DcFailCauseTest extends TelephonyTest {
private class DcFailCauseData {
public final int mCause;
public final boolean mPermanentFailure;
public final boolean mEventLoggable;
DcFailCauseData(int cause, boolean permanentFailure, boolean eventLoggable) {
mCause = cause;
mPermanentFailure = permanentFailure;
mEventLoggable = eventLoggable;
}
}
private ArrayList<DcFailCauseData> mFailCauseDataList;
private int mSubId = 0;
@Before
public void setUp() throws Exception {
super.setUp(getClass().getSimpleName());
mFailCauseDataList = new ArrayList<>();
mFailCauseDataList.add(new DcFailCauseData(0, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x08, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x0E, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x19, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1A, false, true));
mFailCauseDataList.add(new DcFailCauseData(0x1B, true, false));
mFailCauseDataList.add(new DcFailCauseData(0x1C, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x1D, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x1E, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x1F, false, true));
mFailCauseDataList.add(new DcFailCauseData(0x20, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x21, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x22, false, true));
mFailCauseDataList.add(new DcFailCauseData(0x23, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x24, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x25, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x26, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x27, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x28, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x29, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x2A, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x2B, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x2C, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x2D, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x2E, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x32, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x33, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x34, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x35, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x36, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x37, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x41, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x42, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x51, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x5F, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x60, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x61, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x62, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x63, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x64, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x65, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x6F, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x70, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x71, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x72, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x73, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x74, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x75, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x76, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x77, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x78, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x79, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x7A, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1001, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1002, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1003, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1004, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1005, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1006, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1007, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1008, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x1009, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100A, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100B, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100C, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100D, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100E, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x100F, false, false));
mFailCauseDataList.add(new DcFailCauseData(-1, false, false));
mFailCauseDataList.add(new DcFailCauseData(-2, false, false));
mFailCauseDataList.add(new DcFailCauseData(-3, true, true));
mFailCauseDataList.add(new DcFailCauseData(-4, false, false));
mFailCauseDataList.add(new DcFailCauseData(-5, true, true));
mFailCauseDataList.add(new DcFailCauseData(-6, true, true));
mFailCauseDataList.add(new DcFailCauseData(0xFFFF, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x10000, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x10001, true, false));
mFailCauseDataList.add(new DcFailCauseData(0x10002, true, true));
mFailCauseDataList.add(new DcFailCauseData(0x10003, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x10004, false, false));
mFailCauseDataList.add(new DcFailCauseData(0x10005, false, false));
}
@After
public void tearDown() throws Exception {
super.tearDown();
}
@Test
@SmallTest
public void testPermanentFail() throws Exception {
for (DcFailCauseData data : mFailCauseDataList) {
assertEquals("cause = " + data.mCause, data.mPermanentFailure,
DcFailCause.fromInt(data.mCause).isPermanentFail(mContext, mSubId));
}
assertFalse(DcFailCause.fromInt(123456).isPermanentFail(mContext, mSubId));
}
@Test
@SmallTest
public void testEventLoggable() throws Exception {
for (DcFailCauseData data : mFailCauseDataList) {
assertEquals("cause = " + data.mCause, data.mEventLoggable,
DcFailCause.fromInt(data.mCause).isEventLoggable());
}
assertFalse(DcFailCause.fromInt(123456).isEventLoggable());
}
@Test
@SmallTest
public void testGetErrorCode() throws Exception {
for (DcFailCauseData data : mFailCauseDataList) {
assertEquals(data.mCause, DcFailCause.fromInt(data.mCause).getErrorCode());
}
assertEquals(DcFailCause.UNKNOWN.getErrorCode(),
DcFailCause.fromInt(123456).getErrorCode());
}
}