Hush lite wallet for Android
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.

41 lines
1.3 KiB

package cash.z.ecc.android.preference
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
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 PreferenceKeysTest {
@SmallTest
@Test
@Throws(IllegalAccessException::class)
fun fields_public_static_and_final() {
PreferenceKeys::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>()
PreferenceKeys::class.memberProperties
.map { it.getter.call() }
.map { it as String }
.forEach {
assertThat("Duplicate key $it", fieldValueSet.contains(it), equalTo(false))
fieldValueSet.add(it)
}
}
}