@@ -8,10 +8,9 @@ import android.provider.Settings
88import androidx.core.os.ConfigurationCompat
99import androidx.core.os.LocaleListCompat
1010import androidx.test.platform.app.InstrumentationRegistry
11- import dev.drewhamilton.androidtime.format.TestSystemTimeSetting
12- import dev.drewhamilton.androidtime.format.testSystemTimeSetting
11+ import dev.drewhamilton.androidtime.format.AndroidDateTimeFormatter
1312import java.util.Locale
14- import org.junit.After
13+ import org.junit.Before
1514
1615/* *
1716 * A base test class that facilitates using and changing [testSystemTimeSetting], which mimics the
@@ -31,12 +30,9 @@ abstract class TimeSettingTest {
3130 }
3231
3332 protected var systemTimeSetting: String?
34- get() = when (val testSystemTimeSetting = testSystemTimeSetting) {
35- is TestSystemTimeSetting .Set -> testSystemTimeSetting.value
36- is TestSystemTimeSetting .Unset -> null
37- }
33+ get() = AndroidDateTimeFormatter .testSystemTimeSetting
3834 set(value) {
39- testSystemTimeSetting = TestSystemTimeSetting . Set ( value)
35+ AndroidDateTimeFormatter . testSystemTimeSetting = value
4036 }
4137
4238 private fun Context.copyWithLocale (locale : Locale ): Context {
@@ -55,10 +51,34 @@ abstract class TimeSettingTest {
5551 locale = locales[0 ]
5652 }
5753
58- @After fun restoreTimeSetting () {
59- testSystemTimeSetting = TestSystemTimeSetting . Unset
54+ @Before fun enableTestSystemTimeSetting () {
55+ AndroidDateTimeFormatter .useTestSystemTimeSetting = true
6056 }
6157
58+ private var AndroidDateTimeFormatter .useTestSystemTimeSetting: Boolean
59+ get() = javaClass.declaredFields
60+ .single { it.name == " useTestSystemTimeSetting" }
61+ .apply { isAccessible = true }
62+ .get(this ) as Boolean
63+ set(value) {
64+ javaClass.declaredFields
65+ .single { it.name == " useTestSystemTimeSetting" }
66+ .apply { isAccessible = true }
67+ .set(this , value)
68+ }
69+
70+ private var AndroidDateTimeFormatter .testSystemTimeSetting: String?
71+ get() = javaClass.declaredFields
72+ .single { it.name == " testSystemTimeSetting" }
73+ .apply { isAccessible = true }
74+ .get(this ) as String?
75+ set(value) {
76+ javaClass.declaredFields
77+ .single { it.name == " testSystemTimeSetting" }
78+ .apply { isAccessible = true }
79+ .set(this , value)
80+ }
81+
6282 protected companion object {
6383 const val TIME_SETTING_12 = " 12"
6484 const val TIME_SETTING_24 = " 24"
0 commit comments