/*
 * Copyright (C) 2012 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 android.cts.util;

import android.content.Context;

/**
 *  This class emulates AndroidTestCase, but internally it is ActivityInstrumentationTestCase2
 *  to access Instrumentation.
 *  DummyActivity is not supposed to be accessed.
 */
public class CtsAndroidTestCase extends CtsActivityInstrumentationTestCase2<DummyActivity> {
    public CtsAndroidTestCase() {
        super(DummyActivity.class);
    }

    public Context getContext() {
        return getInstrumentation().getContext();
    }
}
