1 package com.android.tv.settings.system.locale
2 
3 import android.os.Bundle
4 import androidx.lifecycle.ViewModelProvider
5 import com.android.internal.app.LocaleStore
6 import com.android.tv.settings.testutils.SettingsShadowActivityManager
7 import com.google.common.truth.Truth.assertThat
8 import org.junit.Test
9 import org.junit.runner.RunWith
10 import org.robolectric.RobolectricTestRunner
11 import org.robolectric.annotation.Config
12 import org.robolectric.shadows.androidx.fragment.FragmentController
13 import java.util.Locale
14 
15 @RunWith(RobolectricTestRunner::class)
16 @Config(shadows = [SettingsShadowActivityManager::class])
17 class CountryPickerFragmentTest {
18     companion object {
19         val EXTRA_PARENT_LOCALE = "PARENT_LOCALE"
20         val parentLocale = LocaleStore.fromLocale(Locale.ENGLISH)
21     }
22 
23     @Test
testCountrySortingnull24     fun testCountrySorting() {
25         val fragment = createCountryPickerFragment()
26         val preferenceScreen = fragment.preferenceScreen
27         assertThat(preferenceScreen.preferenceCount).isEqualTo(3)
28         assertThat(preferenceScreen.getPreference(0).title)
29                 .isEqualTo(LocaleStore.fromLocale(Locale.CANADA).fullCountryNameNative)
30         assertThat(preferenceScreen.getPreference(1).title)
31                 .isEqualTo(LocaleStore.fromLocale(Locale.UK).fullCountryNameNative)
32         assertThat(preferenceScreen.getPreference(2).title)
33                 .isEqualTo(LocaleStore.fromLocale(Locale.US).fullCountryNameNative)
34     }
35 
createCountryPickerFragmentnull36     private fun createCountryPickerFragment(): CountryPickerFragment {
37         val fragment = TestCountryPickerFragment()
38         fragment.arguments = Bundle().apply {
39             putSerializable(EXTRA_PARENT_LOCALE, parentLocale)
40         }
41 
42         return FragmentController.of(fragment).create().start().get()
43     }
44 
45     class TestCountryPickerFragment : CountryPickerFragment() {
onCreatePreferencesnull46         override fun onCreatePreferences(savedInstanceState: Bundle?, s: String?) {
47             val viewModel = ViewModelProvider(requireActivity())[LocaleDataViewModel::class.java]
48             viewModel.mLocaleMap[parentLocale] = listOf(LocaleStore.fromLocale(Locale.UK),
49                     LocaleStore.fromLocale(Locale.CANADA), LocaleStore.fromLocale(Locale.US))
50             super.onCreatePreferences(savedInstanceState, s)
51         }
52     }
53 }