private void BP_WireBunch(TestContext context) { DPoint testOffset = new DPoint(71, 225); CircuitProcessingResult result; this.Config.MaxCircuitLength = 5000; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X + 5, testOffset.Y + 7); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y); for (int y = 0; y < 6; y++) { int rowY = (y * 2) + 1; TAssert.IsObjectInactive(testOffset.X, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + rowY); rowY++; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + rowY); if (y != 3) TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + rowY); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + rowY); } TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 0); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 8); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 10); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 12); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X + 5, testOffset.Y + 7); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y); for (int y = 0; y < 6; y++) { int rowY = (y * 2) + 1; TAssert.IsObjectActive(testOffset.X, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 5, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + rowY); rowY++; TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + rowY); if (y != 3) TAssert.IsObjectActive(testOffset.X + 5, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + rowY); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + rowY); } TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 0); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 8); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 10); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 12); }
private void AC_SingleTileTriggerPortInput(TestContext context) { DPoint testOffset = new DPoint(63, 372); // Middle Switch context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); // Middle Switch this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 6); // Top Switch context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); // Left Switch context.Phase = "3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 6); // Right Switch context.Phase = "4"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); // Bottom Switch context.Phase = "5"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 6); // Middle Switch context.Phase = "6"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); }
private void AC_MultiPortSending(TestContext context) { DPoint testOffset = new DPoint(85, 374); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 4); this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 4); }
private void AC_Statues(TestContext context) { DPoint testOffset = new DPoint(130, 345); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 14, testOffset.Y + 3); TAssert.AreNPCsInBlockRect(testOffset.X + 1, testOffset.Y + 1, 2, 3, TestRunner.NPCId_Guide, 1); TAssert.AreNPCsInBlockRect(testOffset.X + 4, testOffset.Y + 1, 2, 3, TestRunner.NPCId_Slime, 1); TAssert.AreItemsInBlockRect(testOffset.X + 7, testOffset.Y + 1, 2, 3, TestRunner.ItemId_IronPickaxe, 1); }
private void AC_Timers(TestContext context) { DPoint testOffset = new DPoint(154, 344); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 2, testOffset.Y + 1)), false); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 4, testOffset.Y + 1)), false); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 6, testOffset.Y + 1)), false); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 10, testOffset.Y + 1)), false); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 12, testOffset.Y + 1)), false); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 4); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 1); // Other Timer this.QuickProcessCircuit(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 1); // Switch this.QuickProcessCircuit(testOffset.X + 10, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 10, testOffset.Y + 1); // Lever this.QuickProcessCircuit(testOffset.X + 12, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 12, testOffset.Y + 1); context.DelayedActions.Add(new TestDelay(65, contextLocal => { context.Phase = "2"; TAssert.IsObjectActive(testOffset.X, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 1); // Other Timer TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); // Switch TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); // Lever TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y + 1); })); context.DelayedActions.Add(new TestDelay(65, contextLocal => { context.Phase = "3"; TAssert.IsObjectActive(testOffset.X, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 1); // Other Timer TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); // Switch TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); // Lever TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y + 1); })); }
private void AC_BasicDoorToggling(TestContext context) { DPoint testOffset = new DPoint(75, 345); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 3); TAssert.IsBlockType(testOffset.X, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 2, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 4, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 8, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 10, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 12, testOffset.Y + 3, BlockType.DoorClosed); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 3); TAssert.IsBlockType(testOffset.X, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 2, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 4, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 8, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 10, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 12, testOffset.Y + 3, BlockType.DoorOpened); context.Phase = "3"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 3); TAssert.IsBlockType(testOffset.X, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 2, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 4, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 8, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 10, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 12, testOffset.Y + 3, BlockType.DoorClosed); }
private void AC_BlockedDoorToggling2(TestContext context) { DPoint testOffset = new DPoint(104, 345); CircuitProcessingResult result; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 0); this.Assert_SignaledPortDefiningComponents(result, 2); TAssert.IsBlockType(testOffset.X + 1, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 7, testOffset.Y + 3, BlockType.DoorClosed); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 0); this.Assert_SignaledPortDefiningComponents(result, 2); TAssert.IsBlockType(testOffset.X, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 8, testOffset.Y + 3, BlockType.DoorOpened); context.Phase = "3"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 0); this.Assert_SignaledPortDefiningComponents(result, 2); TAssert.IsBlockType(testOffset.X + 1, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 7, testOffset.Y + 3, BlockType.DoorClosed); }
private void AC_BlockActivator(TestContext context) { DPoint testOffset = new DPoint(395, 364); BlockType[,] phaseOneExpectedBlockTypes = new[,] { { BlockType.CobaltBrick, BlockType.Glass, BlockType.Wood, BlockType.MythrilBrick }, { BlockType.BlueBrick, BlockType.MudBlock, BlockType.GreenBrick, BlockType.Clay }, { BlockType.SilverBrick, BlockType.CopperBrick, BlockType.RedBrick, BlockType.StoneBlock }, { BlockType.GrayBrick, BlockType.PinkBrick, BlockType.DirtBlock, BlockType.Meteorite } }; this.Config.BlockActivatorConfig.Cooldown = 0; this.MetadataHandler.Metadata.BlockActivators.Clear(); context.Phase = "1-1"; DPoint activationFieldOffset = new DPoint(testOffset.X + 1, testOffset.Y + 1); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, phaseOneExpectedBlockTypes[y, x]); } } context.Phase = "1-2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { if (x == 3 && y == 3) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.Meteorite); continue; } TAssert.IsTileInactive(activationFieldOffset.X + x, activationFieldOffset.Y + y); } } context.Phase = "1-3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, phaseOneExpectedBlockTypes[y, x]); } } context.Phase = "2-1"; activationFieldOffset = new DPoint(testOffset.X + 8, testOffset.Y + 1); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.GrayBrick); } } context.Phase = "2-2"; this.QuickProcessCircuit(testOffset.X + 7, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { if (x < 2) { TAssert.IsTileInactive(activationFieldOffset.X + x, activationFieldOffset.Y + y); } else { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.GrayBrick); } } } context.Phase = "2-3"; this.QuickProcessCircuit(testOffset.X + 9, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TAssert.IsTileInactive(activationFieldOffset.X + x, activationFieldOffset.Y + y); } } context.Phase = "2-4"; this.QuickProcessCircuit(testOffset.X + 7, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { if (x < 2) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.GrayBrick); } else { TAssert.IsTileInactive(activationFieldOffset.X + x, activationFieldOffset.Y + y); } } } context.Phase = "2-5"; this.QuickProcessCircuit(testOffset.X + 9, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.GrayBrick); } } context.Phase = "2-6"; this.QuickProcessCircuit(testOffset.X + 11, testOffset.Y + 10); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { if (x < 2) { TAssert.IsBlockType(activationFieldOffset.X + x, activationFieldOffset.Y + y, BlockType.GrayBrick); } else { TAssert.IsTileInactive(activationFieldOffset.X + x, activationFieldOffset.Y + y); } } } }
private void AC_Boulder(TestContext context) { DPoint testOffset = new DPoint(413, 373); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 5, testOffset.Y + 1); TAssert.IsTileActive(testOffset.X + 2, testOffset.Y); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 1); TAssert.IsTileActive(testOffset.X + 2, testOffset.Y); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 1); TAssert.IsTileInactive(testOffset.X + 2, testOffset.Y); }
private void AC_SwitchForwarding(TestContext context) { DPoint testOffset = new DPoint(356, 372); context.Phase = "1"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); context.Phase = "2"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); context.Phase = "3"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); context.Phase = "4"; TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 3, testOffset.Y)), true); TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 3, testOffset.Y + 3)), true); // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); context.Phase = "5"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 3); }
private void AC_GrandfatherClock(TestContext context) { DPoint testOffset = new DPoint(366, 366); this.MetadataHandler.Metadata.Clocks.Add(new DPoint(369, 370), new GrandfatherClockMetadata(null)); this.MetadataHandler.Metadata.Clocks.Add(new DPoint(378, 370), new GrandfatherClockMetadata(null)); this.MetadataHandler.Metadata.Clocks.Add(new DPoint(387, 370), new GrandfatherClockMetadata(null)); context.Phase = "1"; TSPlayer.Server.SetTime(false, 0); TSPlayer.Server.SetBloodMoon(false); context.DelayedActions.Add(new TestDelay(61, (contextLocal) => { context.Phase = "2"; TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 22, testOffset.Y + 12); TSPlayer.Server.SetTime(true, 1000); })); context.DelayedActions.Add(new TestDelay(61, (contextLocal) => { context.Phase = "3"; TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 22, testOffset.Y + 12); TSPlayer.Server.SetTime(true, 7200); })); context.DelayedActions.Add(new TestDelay(61, (contextLocal) => { context.Phase = "4"; TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 22, testOffset.Y + 12); TSPlayer.Server.SetTime(true, 46800); })); context.DelayedActions.Add(new TestDelay(61, (contextLocal) => { context.Phase = "5"; TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 22, testOffset.Y + 12); TSPlayer.Server.SetTime(false, 0); })); context.DelayedActions.Add(new TestDelay(61, (contextLocal) => { context.Phase = "6"; TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectInactive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectInactive(testOffset.X + 22, testOffset.Y + 12); // Bloodmoon seems to work fine but the test fails anyway... probably because it takes too long for the bloodmoon setting // to be effective. //TSPlayer.Server.SetBloodMoon(true); TSPlayer.Server.SetTime(true, 9000); })); /*context.DelayedActions.Add(new TestDelay(180, (contextLocal) => { context.Phase = "7"; TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 16, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 21, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 18, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 25, testOffset.Y + 5); TAssert.IsObjectActive(testOffset.X + 22, testOffset.Y + 12); TSPlayer.Server.SetTime(true, 9000); }));*/ }
private void AC_TimerModifiers(TestContext context) { DPoint testOffset = new DPoint(341, 372); ObjectMeasureData firstTorch = TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 1, testOffset.Y)); ObjectMeasureData secondTorch = TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 4, testOffset.Y)); ObjectMeasureData thirdTorch = TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 7, testOffset.Y)); ObjectMeasureData fourthTorch = TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 10, testOffset.Y)); TerrariaUtils.Tiles.SetObjectState(firstTorch, false); TerrariaUtils.Tiles.SetObjectState(secondTorch, false); TerrariaUtils.Tiles.SetObjectState(thirdTorch, false); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); context.Phase = "1"; // First Switch this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 7, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 10, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 10, testOffset.Y + 3); context.DelayedActions.Add(new TestDelay(15, (contextLocal) => { context.Phase = "2"; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(15, (contextLocal) => { context.Phase = "3"; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(thirdTorch, false); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(15, (contextLocal) => { context.Phase = "4"; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(15, (contextLocal) => { context.Phase = "5"; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(thirdTorch, false); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(60, (contextLocal) => { context.Phase = "6"; TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(firstTorch, false); TerrariaUtils.Tiles.SetObjectState(thirdTorch, false); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(60, (contextLocal) => { context.Phase = "7"; TAssert.IsObjectInactive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); TerrariaUtils.Tiles.SetObjectState(thirdTorch, false); TerrariaUtils.Tiles.SetObjectState(fourthTorch, false); })); context.DelayedActions.Add(new TestDelay(60, (contextLocal) => { context.Phase = "8"; TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 3); })); }
private void AC_NOTPorts3(TestContext context) { DPoint testOffset = new DPoint(331, 369); context.Phase = "1"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); // Third Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 6); context.Phase = "2"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); // Third Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 6); context.Phase = "3"; // First Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y); // Second Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 3); // Third Switch this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 6); }
private void AC_NOTPorts1(TestContext context) { DPoint testOffset = new DPoint(314, 369); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 6); context.Phase = "3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); }
private void Vanilla_Timers(TestContext context) { DPoint testOffset = new DPoint(154, 281); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 4); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 1); this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 1); // Other Timer this.QuickProcessCircuit(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 1); // Note that switches and levers should not be signalable in vanilla circuits. // Switch this.QuickProcessCircuit(testOffset.X + 10, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); // Lever this.QuickProcessCircuit(testOffset.X + 12, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y + 1); context.DelayedActions.Add(new TestDelay(65, contextLocal => { context.Phase = "2"; TAssert.IsObjectActive(testOffset.X, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 1); // Other Timer TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); // Switch TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); // Lever TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y + 1); })); context.DelayedActions.Add(new TestDelay(65, contextLocal => { context.Phase = "3"; TAssert.IsObjectActive(testOffset.X, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 1); // Other Timer TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 4); // Switch TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); // Lever TAssert.IsObjectActive(testOffset.X + 12, testOffset.Y + 1); })); }
private void AC_WirelessTransmitter(TestContext context) { DPoint testOffset = new DPoint(422, 371); context.Phase = "1-1"; this.Config.WirelessTransmitterConfigs[ComponentConfigProfile.Default].Range = 3; this.Config.WirelessTransmitterConfigs[ComponentConfigProfile.Default].Cooldown = 0; this.MetadataHandler.Metadata.WirelessTransmitters.Clear(); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset, this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(2, 0), this.GetTestPlayer().Name); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "1-2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "1-3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "2-1"; testOffset.Offset(5, 0); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset, this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(2, 0), this.GetTestPlayer().Name); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "2-2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "2-3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "3-1"; this.Config.WirelessTransmitterConfigs[ComponentConfigProfile.Default].Range = 6; testOffset.Offset(5, 0); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset, this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(2, 0), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(4, 0), this.GetTestPlayer().Name); this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 3); context.Phase = "3-2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 3); context.Phase = "3-3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 3); }
private void AC_AllSpritesToggleState(TestContext context) { DPoint testOffset = new DPoint(46, 343); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 5); this.CheckAllSpritesState(testOffset, false); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 5); this.CheckAllSpritesState(testOffset, true); context.Phase = "3"; this.QuickProcessCircuit(testOffset.X + 1, testOffset.Y + 5); this.CheckAllSpritesState(testOffset, false); }
private void AC_WirelessTransmitter2(TestContext context) { DPoint testOffset = new DPoint(440, 362); this.Config.WirelessTransmitterConfigs[ComponentConfigProfile.Default].Range = 5; this.Config.WirelessTransmitterConfigs[ComponentConfigProfile.Default].Cooldown = 0; this.MetadataHandler.Metadata.WirelessTransmitters.Clear(); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(10, 0), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(7, 1), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(0, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(2, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(4, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(6, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(9, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(11, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(13, 5), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(9, 9), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(3, 10), this.GetTestPlayer().Name); this.MetadataHandler.Metadata.WirelessTransmitters.Add(testOffset.OffsetEx(1, 11), this.GetTestPlayer().Name); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 11, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 10); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 11); TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 12); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 11, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 10); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 11); TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 12); context.Phase = "3"; this.QuickProcessCircuit(testOffset.X + 6, testOffset.Y + 12); TAssert.IsObjectActive(testOffset.X + 10, testOffset.Y + 1); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 11, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 13, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 10); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 11); TAssert.IsObjectActive(testOffset.X + 1, testOffset.Y + 12); }
private void AC_BlockedDoorToggling1(TestContext context) { DPoint testOffset = new DPoint(92, 345); CircuitProcessingResult result; TerrariaUtils.Tiles.SetObjectState(TerrariaUtils.Tiles.MeasureObject(new DPoint(testOffset.X + 4, testOffset.Y + 3)), false); context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 0); this.Assert_SignaledPortDefiningComponents(result, 2); TAssert.IsBlockType(testOffset.X + 2, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 6, testOffset.Y + 3, BlockType.DoorOpened); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 0); this.Assert_SignaledPortDefiningComponents(result, 2); TAssert.IsBlockType(testOffset.X + 1, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 7, testOffset.Y + 3, BlockType.DoorClosed); }
private void BP_MultiBranches2(TestContext context) { DPoint testOffset = new DPoint(85, 229); CircuitProcessingResult result; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 14, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 6); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 5, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X + 14, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 5, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 9, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 7, testOffset.Y + 6); context.Phase = "3"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 14, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 5, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 9, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 7, testOffset.Y + 6); }
private void AC_Pumps(TestContext context) { DPoint testOffset = new DPoint(116, 346); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 5, testOffset.Y + 2); context.DelayedActions.Add(new TestDelay(30, (contextLocal => { TAssert.HasNoLiquid(testOffset.X + 1, testOffset.Y + 1); TAssert.HasNoLiquid(testOffset.X + 2, testOffset.Y + 1); TAssert.HasNoLiquid(testOffset.X + 1, testOffset.Y + 2); TAssert.HasNoLiquid(testOffset.X + 2, testOffset.Y + 2); TAssert.HasFullLiquid(testOffset.X + 8, testOffset.Y + 1); TAssert.HasFullLiquid(testOffset.X + 9, testOffset.Y + 1); TAssert.HasFullLiquid(testOffset.X + 8, testOffset.Y + 2); TAssert.HasFullLiquid(testOffset.X + 9, testOffset.Y + 2); }))); }
private void BP_DoubleSignal2(TestContext context) { DPoint testOffset = new DPoint(110, 230); CircuitProcessingResult result; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 2); this.Assert_SignaledComponents(result, 2); this.Assert_ProcessedBranches(result, 10); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 2); TAssert.IsObjectActive(testOffset.X + 6, testOffset.Y + 2); this.Assert_SignaledComponents(result, 2); this.Assert_ProcessedBranches(result, 10); context.Phase = "3"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 2); TAssert.IsObjectInactive(testOffset.X + 6, testOffset.Y + 2); this.Assert_SignaledComponents(result, 2); this.Assert_ProcessedBranches(result, 10); }
private void AC_ComponentActivation(TestContext context) { DPoint testOffset = new DPoint(148, 342); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); context.Phase = "3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y + 6); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y + 3); }
private void BP_Loop(TestContext context) { DPoint testOffset = new DPoint(120, 230); CircuitProcessingResult result; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X, testOffset.Y + 2); this.Assert_Cancelled(result, CircuitCancellationReason.SignaledSameComponentTooOften, BlockType.Obsidian); }
private void AC_SingleTileTriggerPorts(TestContext context) { DPoint testOffset = new DPoint(43, 372); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectInactive(testOffset.X + 3, testOffset.Y + 6); context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 3); TAssert.IsObjectActive(testOffset.X + 3, testOffset.Y + 6); }
private void BP_ProcessingTime(TestContext context) { DPoint testOffset = new DPoint(129, 180); CircuitProcessingResult result; this.Config.MaxCircuitLength = 2000; context.Phase = "1"; TimeSpan allProcessingTime = TimeSpan.Zero; for (int i = 0; i < 50; i++) { result = this.QuickProcessCircuit(testOffset.X + 21, testOffset.Y + 2); this.Assert_Cancelled(result, CircuitCancellationReason.None); allProcessingTime += result.ProcessingTime; } TimeSpan averageProcessingTime = TimeSpan.FromMilliseconds(allProcessingTime.TotalMilliseconds / 50); if (averageProcessingTime.TotalMilliseconds > 30) throw new AssertException("The average processing time was over 30 milliseconds."); }
private void AC_SelfSwitching(TestContext context) { DPoint testOffset = new DPoint(73, 375); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y); TAssert.IsObjectActive(testOffset.X + 2, testOffset.Y); this.QuickProcessCircuit(testOffset.X + 2, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 2, testOffset.Y); }
private void Vanilla_BlockedDoorToggling1(TestContext context) { DPoint testOffset = new DPoint(92, 282); CircuitProcessingResult result; context.Phase = "1"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 2); TAssert.IsBlockType(testOffset.X + 2, testOffset.Y + 3, BlockType.DoorOpened); TAssert.IsBlockType(testOffset.X + 6, testOffset.Y + 3, BlockType.DoorOpened); context.Phase = "2"; result = this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 3); this.Assert_SignaledComponents(result, 2); TAssert.IsBlockType(testOffset.X + 1, testOffset.Y + 3, BlockType.DoorClosed); TAssert.IsBlockType(testOffset.X + 7, testOffset.Y + 3, BlockType.DoorClosed); }
private void AC_GreenPressurePlate(TestContext context) { DPoint testOffset = new DPoint(91, 375); context.Phase = "1"; this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); this.QuickProcessCircuit(testOffset.X, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 3); }
private void AC_MultiTileTriggerPorts3(TestContext context) { DPoint testOffset = new DPoint(301, 370); // Middle Switch context.Phase = "1"; this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 8); this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 8); // Top Switch context.Phase = "2"; this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 8); // Left Switch context.Phase = "3"; this.QuickProcessCircuit(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 8); // Right Switch context.Phase = "4"; this.QuickProcessCircuit(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 8); // Bottom Switch context.Phase = "5"; this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 8); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectActive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectActive(testOffset.X + 4, testOffset.Y + 8); // Middle Switch context.Phase = "6"; this.QuickProcessCircuit(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y); TAssert.IsObjectInactive(testOffset.X, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 8, testOffset.Y + 4); TAssert.IsObjectInactive(testOffset.X + 4, testOffset.Y + 8); }