package com.example.pocketknife; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.Random; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @RunWith(RobolectricTestRunner.class) @Config(manifest = "src/main/AndroidManifest.xml") public class BuilderTest { private Builder builder; private Random random; @Before public void setup() { random = new Random(42); builder = new PocketKnifeBuilder(RuntimeEnvironment.application); } @Test public void testGetBundle() throws Exception { int i = random.nextInt(); int j = random.nextInt(); Bundle bundle = builder.getBundle(i, j); assertEquals(i, bundle.getInt(PocketKnifeBuilder.ARG_ARG, (i << 1) | 1)); assertEquals(j, bundle.getInt("THIS IS A TEST", (j << 1) | 1)); } @Test public void testGetIntent() throws Exception { int i = random.nextInt(); String s = "This is a test"; Intent intent = builder.getIntent(i, s); assertEquals(Intent.ACTION_DEFAULT, intent.getAction()); assertEquals(i, intent.getIntExtra(PocketKnifeBuilder.EXTRA_EXTRA, i << 1)); assertEquals(s, intent.getStringExtra(Intent.EXTRA_TEXT)); } @Test public void testGetFragment() throws Exception { int i = random.nextInt(); Fragment fragment = builder.getFragment(i); assertNotNull("Fragment", fragment); Bundle args = fragment.getArguments(); assertNotNull("Args", args); assertEquals(i, args.getInt(PocketKnifeBuilder.ARG_ARG, i << 1)); } @Test public void testKeyNameConflict() { int i = random.nextInt(); int j = random.nextInt(); int k = random.nextInt(); Bundle b1 = builder.getBundle(i); Bundle b2 = builder.getBundle(j, k); assertEquals(i, b1.getInt("Testing is awesome", (i << i) | 1)); assertEquals(j, b2.getInt(PocketKnifeBuilder.ARG_ARG, (j << 1) | 1)); assertEquals(k, b2.getInt("THIS IS A TEST", (k << 1) | 1)); Fragment f1 = builder.getFragment(i); assertNotNull("Fragment", f1); Bundle args1 = f1.getArguments(); assertNotNull("Args", args1); assertEquals(i, args1.getInt(PocketKnifeBuilder.ARG_ARG, i << 1)); Fragment f2 = builder.getFragment(j, k); assertNotNull("Fragment 2", f2); Bundle args2 = f2.getArguments(); assertNotNull("Args 2", args2); assertEquals(j, args2.getInt("Fragment Test", j << 1)); assertEquals(k, args2.getInt(PocketKnifeBuilder.ARG_ARG2, k << 1)); String text1 = "Text 1"; String text2 = "Text 2"; Intent i1 = builder.getIntent(i, text1); assertEquals(Intent.ACTION_DEFAULT, i1.getAction()); assertEquals(i, i1.getIntExtra(PocketKnifeBuilder.EXTRA_EXTRA, i << 1)); assertEquals(text1, i1.getStringExtra(Intent.EXTRA_TEXT)); Intent i2 = builder.getIntent(text2); assertEquals(Intent.ACTION_DEFAULT, i2.getAction()); assertEquals(text2, i2.getStringExtra(PocketKnifeBuilder.EXTRA_TEXT)); } @After public void teardown() { random = null; builder = null; } }