• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.notification;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.verify;
23 
24 import android.content.Context;
25 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
26 import android.support.v7.preference.PreferenceViewHolder;
27 import android.view.LayoutInflater;
28 import android.view.View;
29 import android.widget.LinearLayout;
30 import android.widget.RadioButton;
31 import android.widget.Switch;
32 
33 import com.android.settings.R;
34 import com.android.settings.testutils.SettingsRobolectricTestRunner;
35 import com.android.settings.widget.MasterSwitchPreference;
36 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
37 
38 import org.junit.Before;
39 import org.junit.Test;
40 import org.junit.runner.RunWith;
41 import org.robolectric.RuntimeEnvironment;
42 
43 @RunWith(SettingsRobolectricTestRunner.class)
44 public class ZenCustomRadioButtonPreferenceTest {
45 
46     private Context mContext;
47 
48     @Before
setUp()49     public void setUp() {
50         mContext = RuntimeEnvironment.application;
51     }
52 
53     @Test
createNewPreference_shouldSetLayout()54     public void createNewPreference_shouldSetLayout() {
55         final ZenCustomRadioButtonPreference preference
56                 = new ZenCustomRadioButtonPreference(mContext);
57 
58         assertThat(preference.getLayoutResource()).isEqualTo(R.layout.preference_two_target_radio);
59         assertThat(preference.getWidgetLayoutResource())
60                 .isEqualTo(R.layout.preference_widget_gear);
61     }
62 
63     @Test
setChecked_shouldUpdateButtonCheckedState()64     public void setChecked_shouldUpdateButtonCheckedState() {
65         final ZenCustomRadioButtonPreference preference =
66                 new ZenCustomRadioButtonPreference(mContext);
67         final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
68                 LayoutInflater.from(mContext).inflate(
69                   R.layout.preference_two_target_radio, null));
70         final RadioButton toggle = (RadioButton) holder.findViewById(android.R.id.checkbox);
71         preference.onBindViewHolder(holder);
72 
73         preference.setChecked(true);
74         assertThat(toggle.isChecked()).isTrue();
75 
76         preference.setChecked(false);
77         assertThat(toggle.isChecked()).isFalse();
78     }
79 
80     @Test
clickRadioButton_shouldNotifyRadioButtonClicked()81     public void clickRadioButton_shouldNotifyRadioButtonClicked() {
82         final ZenCustomRadioButtonPreference preference
83                 = new ZenCustomRadioButtonPreference(mContext);
84         final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
85                 LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
86         final View toggle = holder.findViewById(R.id.checkbox_frame);
87 
88         ZenCustomRadioButtonPreference.OnRadioButtonClickListener l = mock(
89                 ZenCustomRadioButtonPreference.OnRadioButtonClickListener.class);
90         preference.setOnRadioButtonClickListener(l);
91         preference.onBindViewHolder(holder);
92 
93         toggle.performClick();
94         verify(l).onRadioButtonClick(preference);
95     }
96 
97     @Test
clickWidgetView_shouldNotifyWidgetClicked()98     public void clickWidgetView_shouldNotifyWidgetClicked() {
99         final ZenCustomRadioButtonPreference preference =
100                 new ZenCustomRadioButtonPreference(mContext);
101         final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
102                 LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
103         final View widgetView = holder.findViewById(android.R.id.widget_frame);
104 
105         ZenCustomRadioButtonPreference.OnGearClickListener l = mock(
106                 ZenCustomRadioButtonPreference.OnGearClickListener.class);
107         preference.setOnGearClickListener(l);
108         preference.onBindViewHolder(holder);
109 
110         widgetView.performClick();
111         verify(l).onGearClick(preference);
112     }
113 }
114