From a00fbbb6b31ba2bd897e4e0797d27f5b3af3d288 Mon Sep 17 00:00:00 2001 From: Michael Comella Date: Thu, 8 Apr 2021 13:33:07 -0700 Subject: [PATCH] For #18836: refactor tests into forEachColdStartEntries. --- .../fenix/perf/StartupStateProviderTest.kt | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/app/src/test/java/org/mozilla/fenix/perf/StartupStateProviderTest.kt b/app/src/test/java/org/mozilla/fenix/perf/StartupStateProviderTest.kt index 4838f1e71..afec26447 100644 --- a/app/src/test/java/org/mozilla/fenix/perf/StartupStateProviderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/perf/StartupStateProviderTest.kt @@ -40,26 +40,10 @@ class StartupStateProviderTest { } @Test - fun `GIVEN the app started for an activity WHEN we launched to HomeActivity directly THEN start up is cold`() { - // These entries mimic observed behavior. - logEntries.addAll(listOf( - LogEntry.ActivityCreated(homeActivityClass), - LogEntry.ActivityStarted(homeActivityClass), - LogEntry.AppStarted - )) - assertTrue(provider.isColdStartForStartedActivity(homeActivityClass)) - } - - @Test - fun `GIVEN the app started for an activity WHEN we launched to HA through a non-drawing IntentRA THEN start up is cold`() { - // These entries mimic observed behavior. - logEntries.addAll(listOf( - LogEntry.ActivityCreated(irActivityClass), - LogEntry.ActivityCreated(homeActivityClass), - LogEntry.ActivityStarted(homeActivityClass), - LogEntry.AppStarted - )) - assertTrue(provider.isColdStartForStartedActivity(homeActivityClass)) + fun `GIVEN the app started for an activity WHEN is cold start THEN cold start is true`() { + forEachColdStartEntries { index -> + assertTrue("$index", provider.isColdStartForStartedActivity(homeActivityClass)) + } } @Test @@ -200,27 +184,13 @@ class StartupStateProviderTest { @Test fun `GIVEN the app did not start for an activity WHEN is cold is checked THEN it returns false`() { - fun assertIsNotCold() { assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) } - every { startReasonProvider.reason } returns StartReason.NON_ACTIVITY - assertIsNotCold() // 🔥 - // These are normally the success paths. - logEntries.addAll(listOf( - LogEntry.ActivityCreated(homeActivityClass), - LogEntry.ActivityStarted(homeActivityClass), - LogEntry.AppStarted - )) - assertIsNotCold() + assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) - logEntries.clear() - logEntries.addAll(listOf( - LogEntry.ActivityCreated(irActivityClass), - LogEntry.ActivityCreated(homeActivityClass), - LogEntry.ActivityStarted(homeActivityClass), - LogEntry.AppStarted - )) - assertIsNotCold() + forEachColdStartEntries { index -> + assertFalse("$index", provider.isColdStartForStartedActivity(homeActivityClass)) + } } @Test @@ -233,4 +203,32 @@ class StartupStateProviderTest { fun `GIVEN the app has not been stopped WHEN is cold short circuit is called THEN it returns false`() { assertFalse(provider.shouldShortCircuitColdStart()) } + + private fun forEachColdStartEntries(block: (index: Int) -> Unit) { + // These entries mimic observed behavior. + // + // MAIN: open HomeActivity directly. + val coldStartEntries = listOf(listOf( + LogEntry.ActivityCreated(homeActivityClass), + LogEntry.ActivityStarted(homeActivityClass), + LogEntry.AppStarted + + // VIEW: open non-drawing IntentReceiverActivity, then HomeActivity. + ), listOf( + LogEntry.ActivityCreated(irActivityClass), + LogEntry.ActivityCreated(homeActivityClass), + LogEntry.ActivityStarted(homeActivityClass), + LogEntry.AppStarted + )) + + forEachStartEntry(coldStartEntries, block) + } + + private fun forEachStartEntry(entries: List>, block: (index: Int) -> Unit) { + entries.forEachIndexed { index, startEntry -> + logEntries.clear() + logEntries.addAll(startEntry) + block(index) + } + } }