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