package com.projectsacrifice.game; import static org.junit.Assert.assertEquals; 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 WeightedObjectIntegrationTest { @Test public void productionInputPushesSharedMassOntoPlateAndSaveCapturesEveryObject() { try (ActivityScenario activity = ActivityScenario.launch(MainActivity.class)) { activity.onActivity(current -> { GameView view = current.gameViewForAutomation(); view.enableDeterministicAutomationClock(); view.startLevelForAutomation(17); GameView.AutomationSnapshot initial = view.automationSnapshot(); assertEquals(5, initial.physicalObjectCount()); assertEquals("COUNTERWEIGHT", initial.firstPhysicalObjectType()); assertEquals(3, initial.firstPhysicalObjectMass()); assertFalse(initial.allDoorsOpen()); view.setAutomationInput(false, true, false); view.advanceDeterministicAutomation(3_000L); GameView.AutomationSnapshot pushed = view.automationSnapshot(); assertTrue(pushed.firstPhysicalObjectX() >= 920f); assertTrue(pushed.allDoorsOpen()); GameSessionSnapshot saved = view.sessionSnapshotForAutomation(); assertEquals(5, saved.objects().size()); assertEquals(LevelDefinition.PhysicalObjectType.COUNTERWEIGHT, saved.objects().get(0).type()); }); } } }