16d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti/*
26d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * Copyright (C) 2016 The Android Open Source Project
36d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti *
46d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * Licensed under the Apache License, Version 2.0 (the "License");
56d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * you may not use this file except in compliance with the License.
66d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * You may obtain a copy of the License at
76d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti *
86d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti *      http://www.apache.org/licenses/LICENSE-2.0
96d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti *
106d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * Unless required by applicable law or agreed to in writing, software
116d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * distributed under the License is distributed on an "AS IS" BASIS,
126d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * See the License for the specific language governing permissions and
146d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * limitations under the License.
156d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti */
166d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
177df1a82802cdf842d07a86a80383c7d5ea7ae53aLorenzo Colittipackage com.android.internal.util.test;
186d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
196d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.content.ContentResolver;
206d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.database.ContentObserver;
216d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.net.Uri;
226d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.provider.Settings;
236d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.test.AndroidTestCase;
246d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.test.mock.MockContentResolver;
256d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.test.mock.MockContext;
266d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.test.suitebuilder.annotation.SmallTest;
273394a8e52393b71d757766047ce05fe7813a8e82Guang Zhuimport android.test.suitebuilder.annotation.Suppress;
286d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport android.util.Log;
296d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
306d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport java.util.concurrent.CountDownLatch;
316d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittiimport java.util.concurrent.TimeUnit;
326d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
336d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti/**
346d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti * Unit tests for FakeSettingsProvider.
356d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti */
366d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colittipublic class FakeSettingsProviderTest extends AndroidTestCase {
376d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
386d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    private MockContentResolver mCr;
396d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
406d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    @Override
416d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    public void setUp() throws Exception {
426d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        mCr = new MockContentResolver();
436d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        mCr.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
446d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    }
456d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
466d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    @SmallTest
476d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    public void testBasicOperation() throws Exception {
486d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        String settingName = Settings.System.SCREEN_BRIGHTNESS;
496d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
506d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        try {
516d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti            Settings.System.getInt(mCr, settingName);
526d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti            fail("FakeSettingsProvider should start off empty.");
536d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        } catch (Settings.SettingNotFoundException expected) {}
546d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti
556d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        // Check that fake settings can be written and read back.
566d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        Settings.System.putInt(mCr, settingName, 123);
576d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti        assertEquals(123, Settings.System.getInt(mCr, settingName));
586d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti    }
596d553f6dfdcc188fa6b17d4abb11d6222009a8fbLorenzo Colitti}
60