1843fbc4b10a2c62cb3848836907630f0d56c647eroger xue/*
2843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * Copyright (C) 2017 The Android Open Source Project
3843fbc4b10a2c62cb3848836907630f0d56c647eroger xue *
4843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * Licensed under the Apache License, Version 2.0 (the "License");
5843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * you may not use this file except in compliance with the License.
6843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * You may obtain a copy of the License at
7843fbc4b10a2c62cb3848836907630f0d56c647eroger xue *
8843fbc4b10a2c62cb3848836907630f0d56c647eroger xue *      http://www.apache.org/licenses/LICENSE-2.0
9843fbc4b10a2c62cb3848836907630f0d56c647eroger xue *
10843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * Unless required by applicable law or agreed to in writing, software
11843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * distributed under the License is distributed on an "AS IS" BASIS,
12843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13843fbc4b10a2c62cb3848836907630f0d56c647eroger xue * See the License for the specific language governing permissions and
14d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue * limitations under the License
15843fbc4b10a2c62cb3848836907630f0d56c647eroger xue */
16843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
17d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xuepackage com.android.car.settings.display;
18843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
19843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport android.content.Context;
20843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport android.provider.Settings;
21d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue
22d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport com.android.car.settings.CarSettingsRobolectricTestRunner;
23d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xueimport com.android.car.settings.TestConfig;
24d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue
25843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.junit.Before;
26843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.junit.Test;
27843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.junit.runner.RunWith;
28843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.robolectric.RuntimeEnvironment;
29843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.robolectric.annotation.Config;
30843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport org.robolectric.Robolectric;
31843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
32843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport static com.google.common.truth.Truth.assertThat;
33843fbc4b10a2c62cb3848836907630f0d56c647eroger xueimport static android.provider.Settings.System.SCREEN_BRIGHTNESS;
34843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
35843fbc4b10a2c62cb3848836907630f0d56c647eroger xue@RunWith(CarSettingsRobolectricTestRunner.class)
36843fbc4b10a2c62cb3848836907630f0d56c647eroger xue@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
37d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xuepublic class BrightnessLineItemTest {
38843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    private Context mContext;
39843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
40d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue    private BrightnessLineItem mBrightnessLineItem;
41843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
42843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    @Before
43843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    public void setUp() {
44843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        mContext = RuntimeEnvironment.application;
45d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue        mBrightnessLineItem = new BrightnessLineItem(mContext);
46843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    }
47843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
48843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    @Test
49d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue    public void testInitialValue() throws Exception {
50843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        // for some reason in robolectric test, I can't set this value over 100
51843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        for (int brightness = 0; brightness < 100; ++brightness) {
52843fbc4b10a2c62cb3848836907630f0d56c647eroger xue            Settings.System.putInt(mContext.getContentResolver(), SCREEN_BRIGHTNESS, brightness);
53ddb7544cfc9f5263d719c9d2760451e9316d3bderoger xue            assertThat(mBrightnessLineItem.getSeekbarValue()).isEqualTo(brightness);
54843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        }
55843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    }
56843fbc4b10a2c62cb3848836907630f0d56c647eroger xue
57843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    @Test
58d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue    public void testOnSeekbarChanged() throws Exception {
59843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        for (int brightness = 0; brightness < 255; ++brightness) {
60d91964dd49bc0e6a49ff43fb99c70ad2eca6daddroger xue            mBrightnessLineItem.onSeekbarChanged(brightness);
61843fbc4b10a2c62cb3848836907630f0d56c647eroger xue            assertThat(Settings.System.getInt(mContext.getContentResolver(),
62843fbc4b10a2c62cb3848836907630f0d56c647eroger xue                    SCREEN_BRIGHTNESS)).isEqualTo(brightness);
63843fbc4b10a2c62cb3848836907630f0d56c647eroger xue        }
64843fbc4b10a2c62cb3848836907630f0d56c647eroger xue    }
65843fbc4b10a2c62cb3848836907630f0d56c647eroger xue}
66