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