14ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling/* 24ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * Copyright (C) 2017 The Android Open Source Project 34ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * 44ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * Licensed under the Apache License, Version 2.0 (the "License"); 54ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * you may not use this file except in compliance with the License. 64ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * You may obtain a copy of the License at 74ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * 84ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * http://www.apache.org/licenses/LICENSE-2.0 94ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * 104ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * Unless required by applicable law or agreed to in writing, software 114ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * distributed under the License is distributed on an "AS IS" BASIS, 124ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * See the License for the specific language governing permissions and 144ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling * limitations under the License. 154ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling */ 164ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.preference.tests; 184ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 194ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport static org.mockito.ArgumentMatchers.anyBoolean; 204ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport static org.mockito.Mockito.never; 214ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport static org.mockito.Mockito.verify; 224ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport static org.mockito.Mockito.when; 234ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 244ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport android.support.test.InstrumentationRegistry; 259d96eff39b84d1718ccd11e509556bc213d85329Aurimas Liutikasimport android.support.test.filters.SdkSuppress; 264ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport android.support.test.filters.SmallTest; 274ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport android.support.test.runner.AndroidJUnit4; 284ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport android.view.ViewGroup; 294ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport android.widget.TextView; 304ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 31ca95d1c53dd086c368cd21685179517d4dadabcdAurimas Liutikasimport androidx.preference.Preference; 32ca95d1c53dd086c368cd21685179517d4dadabcdAurimas Liutikasimport androidx.preference.PreferenceViewHolder; 33ca95d1c53dd086c368cd21685179517d4dadabcdAurimas Liutikas 344ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport org.junit.Before; 354ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport org.junit.Test; 364ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport org.junit.runner.RunWith; 374ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport org.mockito.Mock; 384ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingimport org.mockito.MockitoAnnotations; 394ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 409d96eff39b84d1718ccd11e509556bc213d85329Aurimas Liutikas@SdkSuppress(maxSdkVersion = 27) // This test only works pre-P due to mocking final methods. 414ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling@SmallTest 424ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling@RunWith(AndroidJUnit4.class) 434ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Lingpublic class PreferenceSingleLineTitleTest { 444ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 454ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling private Preference mPreference; 464ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 474ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Mock 484ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling private ViewGroup mViewGroup; 494ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Mock 504ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling private TextView mTitleView; 514ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 524ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Before 534ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling public void setUp() { 544ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling MockitoAnnotations.initMocks(this); 554ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling when(mViewGroup.findViewById(android.R.id.title)).thenReturn(mTitleView); 564ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 574ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference = new Preference(InstrumentationRegistry.getTargetContext()); 584ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.setTitle("Test Title"); 594ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling } 604ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 614ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Test 624ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling public void bindViewHolder_singleLineTitleNotSet_shouldNotSetSingleLine() { 634ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(mViewGroup); 644ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.onBindViewHolder(holder); 654ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 664ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling verify(mTitleView, never()).setSingleLine(anyBoolean()); 674ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling } 684ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 694ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Test 704ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling public void bindViewHolder_singleLineTitleSetToTrue_shouldSetSingleLineToTrue() { 714ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(mViewGroup); 724ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.setSingleLineTitle(true); 734ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.onBindViewHolder(holder); 744ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 754ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling verify(mTitleView).setSingleLine(true); 764ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling } 774ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 784ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling @Test 794ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling public void bindViewHolder_singleLineTitleSetToFalse_shouldSetSingleLineToFalse() { 804ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(mViewGroup); 814ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.setSingleLineTitle(false); 824ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling mPreference.onBindViewHolder(holder); 834ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 844ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling verify(mTitleView).setSingleLine(false); 854ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling } 864ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling 874ded4c1e36b74009a7fef0c66dbdde62349068d1Doris Ling} 88