2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-11 13:11:01 +00:00

For #18836: refactor tests to forEachHotStartEntries.

This commit is contained in:
Michael Comella 2021-04-08 13:45:59 -07:00 committed by Michael Comella
parent a7f4aac6e8
commit fd11cc1c51

View File

@ -49,7 +49,14 @@ class StartupStateProviderTest {
@Test @Test
fun `GIVEN the app started for an activity WHEN warm start THEN cold start is false`() { fun `GIVEN the app started for an activity WHEN warm start THEN cold start is false`() {
forEachWarmStartEntries { index -> forEachWarmStartEntries { index ->
assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) assertFalse("$index", provider.isColdStartForStartedActivity(homeActivityClass))
}
}
@Test
fun `GIVEN the app started for an activity WHEN hot start THEN cold start is false` () {
forEachHotStartEntries { index ->
assertFalse("$index", provider.isColdStartForStartedActivity(homeActivityClass))
} }
} }
@ -82,34 +89,6 @@ class StartupStateProviderTest {
assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) assertFalse(provider.isColdStartForStartedActivity(homeActivityClass))
} }
@Test
fun `GIVEN the app started for an activity and we're truncating the log for optimization WHEN hot start THEN start up is not cold`() {
// These entries are from observed behavior.
logEntries.addAll(listOf(
LogEntry.AppStopped,
LogEntry.ActivityStopped(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertFalse(provider.isColdStartForStartedActivity(homeActivityClass))
}
@Test
fun `GIVEN the app started for an activity and we're not truncating the log for optimization WHEN hot start THEN start up is not cold`() {
// This shouldn't occur in the wild due to the optimization but, just in case the behavior changes,
// we check for it.
logEntries.addAll(listOf(
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted,
LogEntry.AppStopped,
LogEntry.ActivityStopped(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertFalse(provider.isColdStartForStartedActivity(homeActivityClass))
}
@Test @Test
fun `GIVEN the app started for an activity WHEN multiple activities are started but not stopped (maybe impossible) THEN start up is not cold`() { fun `GIVEN the app started for an activity WHEN multiple activities are started but not stopped (maybe impossible) THEN start up is not cold`() {
fun assertIsNotCold() { assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) } fun assertIsNotCold() { assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) }
@ -231,6 +210,34 @@ class StartupStateProviderTest {
forEachStartEntry(warmStartEntries, block) forEachStartEntry(warmStartEntries, block)
} }
private fun forEachHotStartEntries(block: (index: Int) -> Unit) {
// These entries mimic observed behavior. We test both truncated (i.e. the current behavior
// with the optimization to prevent an infinite log) and untruncated (the behavior without
// such an optimization).
//
// truncated MAIN: open HomeActivity directly.
val hotStartEntries = listOf(listOf(
LogEntry.AppStopped,
LogEntry.ActivityStopped(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
// untruncated MAIN: open HomeActivity directly.
), listOf(
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted,
LogEntry.AppStopped,
LogEntry.ActivityStopped(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
// TODO: add VIEW.
forEachStartEntry(hotStartEntries, block)
}
private fun forEachStartEntry(entries: List<List<LogEntry>>, block: (index: Int) -> Unit) { private fun forEachStartEntry(entries: List<List<LogEntry>>, block: (index: Int) -> Unit) {
entries.forEachIndexed { index, startEntry -> entries.forEachIndexed { index, startEntry ->
logEntries.clear() logEntries.clear()