package com.getbase.android.db; import static com.google.common.truth.Truth.assertThat; import com.getbase.android.db.cursors.Cursors; import com.getbase.android.db.cursors.SingleRowTransforms; import com.getbase.android.db.provider.Utils; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.ParameterizedRobolectricTestRunner; import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; import org.robolectric.annotation.Config; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collection; @RunWith(ParameterizedRobolectricTestRunner.class) @Config(manifest = Config.NONE) public class UtilityClassesTest { private Class<?> mKlass; public UtilityClassesTest(Class<?> klass) { mKlass = klass; } @Parameters(name = "{0}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { Cursors.class }, { SingleRowTransforms.class }, { Utils.class }, }); } @Test public void shouldBeWellDefined() throws Exception { assertThat(mKlass.getSuperclass()).isEqualTo(Object.class); assertThat(Modifier.isFinal(mKlass.getModifiers())).isTrue(); assertThat(mKlass.getDeclaredConstructors()).hasLength(1); final Constructor<?> constructor = mKlass.getDeclaredConstructor(); assertThat(constructor.isAccessible()).isFalse(); assertThat(Modifier.isPrivate(constructor.getModifiers())).isTrue(); for (final Method method : mKlass.getDeclaredMethods()) { assertThat(Modifier.isStatic(method.getModifiers())).named(method.getName()).isTrue(); } } }