package com.example.pocketknife; import android.content.Intent; import android.os.Bundle; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.io.Serializable; import java.util.ArrayList; import java.util.Random; import java.util.UUID; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @RunWith(RobolectricTestRunner.class) @Config(manifest = "src/main/AndroidManifest.xml") public class SimpleActivityTest extends BaseTest { @Test public void verifyExtraBinding() { Intent intent = new Intent(RuntimeEnvironment.application, SimpleActivity.class); Random random = new Random(42); boolean aBoolean = random.nextBoolean(); intent.putExtra(SimpleActivity.BOOLEAN_EXTRA, aBoolean); boolean[] booleans = {random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean()}; intent.putExtra(SimpleActivity.BOOLEAN_ARRAY_EXTRA, booleans); Bundle bundle = new Bundle(); bundle.putInt(BUNDLE_INT_ARG, random.nextInt()); bundle.putSerializable(BUNDLE_SERIALIZABLE_ARG, UUID.randomUUID().toString()); intent.putExtra(SimpleActivity.BUNDLE_EXTRA, bundle); byte aByte = (byte) random.nextInt(); intent.putExtra(SimpleActivity.BYTE_EXTRA, aByte); byte[] bytes = new byte[random.nextInt(10)]; random.nextBytes(bytes); intent.putExtra(SimpleActivity.BYTE_ARRAY_EXTRA, bytes); char aChar = (char) random.nextInt(); intent.putExtra(SimpleActivity.CHAR_EXTRA, aChar); char[] chars = {(char) random.nextInt(), (char) random.nextInt()}; intent.putExtra(SimpleActivity.CHAR_ARRAY_EXTRA, chars); CharSequence charSequence = UUID.randomUUID().toString(); intent.putExtra(SimpleActivity.CHAR_SEQUENCE_EXTRA, charSequence); CharSequence[] charSequences = {UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString()}; intent.putExtra(SimpleActivity.CHAR_SEQUENCE_ARRAY_EXTRA, charSequences); ArrayList<CharSequence> charSequenceArrayList = new ArrayList<CharSequence>(); charSequenceArrayList.add(UUID.randomUUID().toString()); intent.putCharSequenceArrayListExtra(SimpleActivity.CHAR_SEQUENCE_ARRAY_LIST_EXTRA, charSequenceArrayList); double aDouble = random.nextDouble(); intent.putExtra(SimpleActivity.DOUBLE_EXTRA, aDouble); double[] doubles = {random.nextDouble()}; intent.putExtra(SimpleActivity.DOUBLE_ARRAY_EXTRA, doubles); float aFloat = random.nextFloat(); intent.putExtra(SimpleActivity.FLOAT_EXTRA, aFloat); float[] floats = {random.nextFloat()}; intent.putExtra(SimpleActivity.FLOAT_ARRAY_EXTRA, floats); int anInt = random.nextInt(); intent.putExtra(SimpleActivity.INT_EXTRA, anInt); int[] ints = {random.nextInt(), random.nextInt(), random.nextInt(), random.nextInt()}; intent.putExtra(SimpleActivity.INT_ARRAY_EXTRA, ints); ArrayList<Integer> integerArrayList = new ArrayList<Integer>(); integerArrayList.add(random.nextInt()); intent.putIntegerArrayListExtra(SimpleActivity.INTEGER_ARRAY_LIST_EXTRA, integerArrayList); long aLong = random.nextLong(); intent.putExtra(SimpleActivity.LONG_EXTRA, aLong); long[] longs = {random.nextLong(), random.nextLong(), random.nextLong(), random.nextLong()}; intent.putExtra(SimpleActivity.LONG_ARRAY_EXTRA, longs); MyParcelable parcelable = new MyParcelable(random.nextInt()); intent.putExtra(SimpleActivity.PARCELABLE_EXTRA, parcelable); MyParcelable[] parcelables = {new MyParcelable(random.nextInt()), new MyParcelable(random.nextInt()), new MyParcelable(random.nextInt())}; intent.putExtra(SimpleActivity.PARCELABLE_ARRAY_EXTRA, parcelables); ArrayList<MyParcelable> parcelableArrayList = new ArrayList<MyParcelable>(); parcelableArrayList.add(new MyParcelable(random.nextInt())); intent.putParcelableArrayListExtra(SimpleActivity.PARCELABLE_ARRAY_LIST_EXTRA, parcelableArrayList); Serializable serializable = UUID.randomUUID().toString(); intent.putExtra(SimpleActivity.SERIALIZABLE_EXTRA, serializable); short aShort = (short) random.nextInt(); intent.putExtra(SimpleActivity.SHORT_EXTRA, aShort); short[] shorts = {(short) random.nextInt(), (short) random.nextInt(), (short) random.nextInt(), (short) random.nextInt()}; intent.putExtra(SimpleActivity.SHORT_ARRAY_EXTRA, shorts); String string = UUID.randomUUID().toString(); intent.putExtra(SimpleActivity.STRING_EXTRA, string); String[] strings = {UUID.randomUUID().toString()}; intent.putExtra(SimpleActivity.STRING_ARRAY_EXTRA, strings); ArrayList<String> stringArrayList = new ArrayList<String>(); stringArrayList.add(UUID.randomUUID().toString()); intent.putExtra(SimpleActivity.STRING_ARRAY_LIST_EXTRA, stringArrayList); intent.putExtra(Intent.EXTRA_TEXT, string); SimpleActivity simpleActivity = Robolectric.buildActivity(SimpleActivity.class).withIntent(intent).create().get(); // Boolean assertEquals(aBoolean, simpleActivity.aBoolean); // Array assertBooleanArrayEquals(booleans, simpleActivity.booleans); // Bundle assertBundleEquals(bundle, simpleActivity.bundle); // Byte assertEquals(aByte, simpleActivity.aByte); // Array assertArrayEquals(bytes, simpleActivity.bytes); // Char assertEquals(aChar, simpleActivity.aChar); // Array assertArrayEquals(chars, simpleActivity.chars); // CharSequence assertEquals(charSequence, simpleActivity.charSequence); // Array assertArrayEquals(charSequences, simpleActivity.charSequences); // ArrayList assertArrayListEquals(charSequenceArrayList, simpleActivity.charSequenceArrayList); // Double assertEquals(aDouble, simpleActivity.aDouble, 0); // Array assertArrayEquals(doubles, simpleActivity.doubles, 0); // Float assertEquals(aFloat, simpleActivity.aFloat, 0); // Array assertArrayEquals(floats, simpleActivity.floats, 0); // Int assertEquals(anInt, simpleActivity.anInt); // Array assertArrayEquals(ints, simpleActivity.ints); // ArrayList assertArrayListEquals(integerArrayList, simpleActivity.integerArrayList); // Long assertEquals(aLong, simpleActivity.aLong); // Array assertArrayEquals(longs, simpleActivity.longs); //Parcelable assertEquals(parcelable, simpleActivity.parcelable); // Array assertArrayEquals(parcelables, simpleActivity.parcelables); // ArrayList assertArrayListEquals(parcelableArrayList, simpleActivity.parcelableArrayList); // Serializable String s1 = (String) serializable; String s2 = (String) simpleActivity.serializable; assertEquals(s1, s2); // Shorts assertEquals(aShort, simpleActivity.aShort); // Array assertArrayEquals(shorts, simpleActivity.shorts); // String assertEquals(string, simpleActivity.string); // Array assertArrayEquals(strings, simpleActivity.strings); // ArrayList assertArrayListEquals(stringArrayList, simpleActivity.stringArrayList); // Not Required assertNull(simpleActivity.s); assertEquals(SimpleActivity.NRI_DEFAULT, simpleActivity.notRequired); assertEquals(string, simpleActivity.text); } @Test(expected = IllegalStateException.class) public void verifyExceptionThrown() { Intent intent = new Intent(RuntimeEnvironment.application, SimpleActivity.class); Robolectric.buildActivity(SimpleActivity.class).withIntent(intent).create().get(); } @Test(expected = IllegalStateException.class) public void verifyNullIntentException() { Robolectric.buildActivity(SimpleActivity.class).create().get(); } @Test public void verifyNotRequiredExtraBinding() { SimpleFragmentActivity activity = Robolectric.buildActivity(SimpleFragmentActivity.class).create().get(); assertEquals(2, activity.intExtra); assertEquals("NOT_REQUIRED", activity.stringExtra); } }