forked from hush/SilentDragonAndroid
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
package cash.z.ecc.android.preference
|
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
import androidx.test.filters.SmallTest
|
|
import cash.z.ecc.android.preference.model.DefaultValue
|
|
import org.hamcrest.CoreMatchers.equalTo
|
|
import org.hamcrest.MatcherAssert.assertThat
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
import java.lang.reflect.Modifier
|
|
import kotlin.reflect.full.memberProperties
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
class PreferencesTest {
|
|
@SmallTest
|
|
@Test
|
|
@Throws(IllegalAccessException::class)
|
|
fun fields_public_static_and_final() {
|
|
Preferences::class.java.fields.forEach {
|
|
val modifiers = it.modifiers
|
|
assertThat(Modifier.isFinal(modifiers), equalTo(true))
|
|
assertThat(Modifier.isStatic(modifiers), equalTo(true))
|
|
assertThat(Modifier.isPublic(modifiers), equalTo(true))
|
|
}
|
|
}
|
|
|
|
// This test is primary to prevent copy-paste errors in preference keys
|
|
@SmallTest
|
|
@Test
|
|
fun key_values_unique() {
|
|
val fieldValueSet = mutableSetOf<String>()
|
|
|
|
Preferences::class.memberProperties
|
|
.map { it.getter.call(Preferences) }
|
|
.map { it as DefaultValue<*> }
|
|
.forEach {
|
|
assertThat(
|
|
"Duplicate key ${it.key}",
|
|
fieldValueSet.contains(it.key),
|
|
equalTo(false)
|
|
)
|
|
|
|
fieldValueSet.add(it.key)
|
|
}
|
|
}
|
|
}
|
|
|