package com.projectsacrifice.game; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import androidx.test.core.app.ActivityScenario; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public final class ChallengeCollectibleIntegrationTest { @Test public void collectedCacheSurvivesRecreationAndRestartResetsAttemptState() { try (ActivityScenario activity = ActivityScenario.launch(MainActivity.class)) { activity.onActivity(current -> { GameView view = current.gameViewForAutomation(); view.enableDeterministicAutomationClock(); view.startLevelForAutomation(18); assertTrue(view.automationSnapshot().collectibleVisible()); view.setAutomationInput(false, true, false); for (int decision = 0; decision < 400 && view.automationSnapshot().playerX() < 650f; decision++) { view.advanceDeterministicAutomation(16L); } assertTrue("approach x=" + view.automationSnapshot().playerX(), view.automationSnapshot().playerX() >= 650f); view.setAutomationInput(false, true, true); for (int decision = 0; decision < 180 && !view.automationSnapshot().collectibleFound(); decision++) { view.advanceDeterministicAutomation(16L); } view.setAutomationInput(false, false, false); assertTrue(view.automationSnapshot().collectibleFound()); assertFalse(view.automationSnapshot().collectibleVisible()); assertTrue(view.sessionSnapshotForAutomation().collectibleFound()); }); activity.recreate(); activity.onActivity(current -> { GameView view = current.gameViewForAutomation(); assertTrue(view.automationSnapshot().visiblyPaused()); assertTrue(view.automationSnapshot().collectibleFound()); assertFalse(view.automationSnapshot().collectibleVisible()); view.startLevelForAutomation(18); assertFalse(view.automationSnapshot().collectibleFound()); assertTrue(view.automationSnapshot().collectibleVisible()); }); } } }