package com.example.pocketknife; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import pocketknife.PocketKnife; import java.util.Set; import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @RunWith(RobolectricTestRunner.class) @Config(manifest = "src/main/AndroidManifest.xml") public class StringSerializerClassTest { @Test public void testSaveState() { String s = UUID.randomUUID().toString(); StringSerializerClass stringSerializerClass1 = new StringSerializerClass(); stringSerializerClass1.saveString = s; Bundle bundle = new Bundle(); PocketKnife.saveInstanceState(stringSerializerClass1, bundle); Set<String> keys = bundle.keySet(); for (String key : keys) { assertNotEquals(s, bundle.getString(key)); } StringSerializerClass stringSerializerClass2 = new StringSerializerClass(); PocketKnife.restoreInstanceState(stringSerializerClass2, bundle); assertEquals(s, stringSerializerClass2.saveString); } @Test public void testBuildAndBindArgument() { String s = UUID.randomUUID().toString(); StringSerializerClass stringSerializerClass = new StringSerializerClass(); SerializerBuilder builder = new PocketKnifeSerializerBuilder(RuntimeEnvironment.application); Bundle bundle = builder.buildBundle(s); assertNotEquals(s, bundle.getString(PocketKnifeSerializerBuilder.ARG_ARG_STRING)); PocketKnife.bindArguments(stringSerializerClass, bundle); assertEquals(s, stringSerializerClass.argString); } @Test public void testBuildAndBindExtras() { String s = UUID.randomUUID().toString(); StringSerializerClass stringSerializerClass = new StringSerializerClass(); SerializerBuilder builder = new PocketKnifeSerializerBuilder(RuntimeEnvironment.application); Intent intent = builder.buildIntent(s); assertNotEquals(s, intent.getStringExtra(PocketKnifeSerializerBuilder.EXTRA_EXTRA_STRING)); PocketKnife.bindExtras(stringSerializerClass, intent); assertEquals(s, stringSerializerClass.extraString); } @Test public void testBuildFragmentAndBindArgument() { String s = UUID.randomUUID().toString(); StringSerializerClass stringSerializerClass = new StringSerializerClass(); SerializerBuilder builder = new PocketKnifeSerializerBuilder(RuntimeEnvironment.application); Fragment fragment = builder.buildFragment(s); Bundle bundle = fragment.getArguments(); assertNotEquals(s, bundle.getString(PocketKnifeSerializerBuilder.ARG_ARG_STRING)); PocketKnife.bindArguments(stringSerializerClass, bundle); assertEquals(s, stringSerializerClass.argString); } }