Добавить общую систему весовых объектов

This commit is contained in:
2026-08-19 07:40:11 +03:00
parent 19bb64edfb
commit 259fcd316b
32 changed files with 1017 additions and 34 deletions
@@ -0,0 +1,42 @@
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<MainActivity> 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());
});
}
}
}