• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  *
15  */
16 
17 package com.android.settings.widget;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 import static org.mockito.Mockito.spy;
21 import static org.mockito.Mockito.verify;
22 
23 import android.content.Context;
24 import android.view.View;
25 import android.widget.Button;
26 
27 import com.android.settings.R;
28 import com.android.settings.testutils.SettingsRobolectricTestRunner;
29 
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.mockito.MockitoAnnotations;
34 import org.robolectric.RuntimeEnvironment;
35 import org.robolectric.util.ReflectionHelpers;
36 
37 @RunWith(SettingsRobolectricTestRunner.class)
38 public class TwoStateButtonPreferenceTest {
39 
40     private TwoStateButtonPreference mPreference;
41     private Context mContext;
42     private Button mButtonOn;
43     private Button mButtonOff;
44 
45     @Before
setUp()46     public void setUp() {
47         MockitoAnnotations.initMocks(this);
48         mContext = spy(RuntimeEnvironment.application);
49         mPreference = spy(new TwoStateButtonPreference(mContext, null /* AttributeSet */));
50         mButtonOn = new Button(mContext);
51         mButtonOn.setId(R.id.state_on_button);
52         mButtonOff = new Button(mContext);
53         mButtonOff.setId(R.id.state_off_button);
54         ReflectionHelpers.setField(mPreference, "mButtonOn", mButtonOn);
55         ReflectionHelpers.setField(mPreference, "mButtonOff", mButtonOff);
56     }
57 
58     @Test
testSetButtonVisibility_stateOn_onlyShowButtonOn()59     public void testSetButtonVisibility_stateOn_onlyShowButtonOn() {
60         mPreference.setChecked(true /* stateOn */);
61 
62         assertThat(mButtonOn.getVisibility()).isEqualTo(View.GONE);
63         assertThat(mButtonOff.getVisibility()).isEqualTo(View.VISIBLE);
64     }
65 
66     @Test
testSetButtonVisibility_stateOff_onlyShowButtonOff()67     public void testSetButtonVisibility_stateOff_onlyShowButtonOff() {
68         mPreference.setChecked(false /* stateOn */);
69 
70         assertThat(mButtonOn.getVisibility()).isEqualTo(View.VISIBLE);
71         assertThat(mButtonOff.getVisibility()).isEqualTo(View.GONE);
72     }
73 
74     @Test
testSetButtonEnabled_enabled_buttonEnabled()75     public void testSetButtonEnabled_enabled_buttonEnabled() {
76         mPreference.setButtonEnabled(true /* enabled */);
77 
78         assertThat(mButtonOn.isEnabled()).isTrue();
79         assertThat(mButtonOff.isEnabled()).isTrue();
80     }
81 
82     @Test
testSetButtonEnabled_disabled_buttonDisabled()83     public void testSetButtonEnabled_disabled_buttonDisabled() {
84         mPreference.setButtonEnabled(false /* enabled */);
85 
86         assertThat(mButtonOn.isEnabled()).isFalse();
87         assertThat(mButtonOff.isEnabled()).isFalse();
88     }
89 
90     @Test
onClick_shouldPropagateChangeToListener()91     public void onClick_shouldPropagateChangeToListener() {
92         mPreference.onClick(mButtonOn);
93         verify(mPreference).callChangeListener(true);
94 
95         mPreference.onClick(mButtonOff);
96         verify(mPreference).callChangeListener(false);
97     }
98 }
99