Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47661833 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add test to verify regulatory info launches properly" into oc-dev

parents 4ae52fc7 06ee0e93
Loading
Loading
Loading
Loading
+91 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.settings;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.RootMatchers.isDialog;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static junit.framework.Assert.fail;

import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class RegulatoryInfoDisplayActivityTest {

    private Instrumentation mInstrumentation;
    private Intent mRegulatoryInfoIntent;

    @Before
    public void setUp() {
        mInstrumentation = InstrumentationRegistry.getInstrumentation();
        mRegulatoryInfoIntent = new Intent("android.settings.SHOW_REGULATORY_INFO")
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(mInstrumentation.getTargetContext().getPackageName());
    }

    @Test
    public void resolveRegulatoryInfoIntent_intentShouldMatchConfig() {
        // Load intent from PackageManager and load config from Settings app
        final Context context = mInstrumentation.getTargetContext();

        final boolean hasRegulatoryInfo = context.getResources()
                .getBoolean(R.bool.config_show_regulatory_info);
        final ResolveInfo resolveInfo = mInstrumentation.getTargetContext().getPackageManager()
                .resolveActivity(mRegulatoryInfoIntent, 0 /* flags */);

        // Check config and intent both enable or both disabled.
        if (hasRegulatoryInfo && resolveInfo == null) {
            fail("Config enables regulatory info but there is no handling intent");
            return;
        }
        if (!hasRegulatoryInfo && resolveInfo != null) {
            fail("Config disables regulatory info but there is at least one handling intent");
            return;
        }
    }

    @Test
    public void launchRegulatoryInfo_shouldNotCrash() {
        final Context context = mInstrumentation.getTargetContext();
        final boolean hasRegulatoryInfo = context.getResources()
                .getBoolean(R.bool.config_show_regulatory_info);

        if (!hasRegulatoryInfo) {
            return;
        }
        // Launch intent
        mInstrumentation.startActivitySync(mRegulatoryInfoIntent);

        onView(withId(R.id.regulatoryInfo))
                .inRoot(isDialog())
                .check(matches(isDisplayed()));
    }

}