diff --git a/HwProject/src/Pump.java b/HwProject/src/Pump.java index e6f35a1..c744761 100644 --- a/HwProject/src/Pump.java +++ b/HwProject/src/Pump.java @@ -250,7 +250,7 @@ public int repair() @Override public int connectPipe(Pipe pipe) { - if (connectedPipes.size() < maxConnectedPipes - 1) + if (connectedPipes.size() < maxConnectedPipes) { return super.connectPipe(pipe); } diff --git a/HwProject/tests/DrainTest.java b/HwProject/tests/DrainTest.java index b6b2ad3..30f6b13 100644 --- a/HwProject/tests/DrainTest.java +++ b/HwProject/tests/DrainTest.java @@ -63,9 +63,6 @@ public void testPickUpPipe() { @AfterEach public void cleanUp() { - TestPump.setInstanceNr(0); - TestPipe.setInstanceNr(0); - TestSource.setInstanceNr(0); - TestDrain.setInstanceNr(0); + TestCleanup.cleanup(); } } diff --git a/HwProject/tests/HelperClasses/TestPipe.java b/HwProject/tests/HelperClasses/TestPipe.java index ea8fd3e..dd3de6d 100644 --- a/HwProject/tests/HelperClasses/TestPipe.java +++ b/HwProject/tests/HelperClasses/TestPipe.java @@ -1,24 +1,43 @@ -package HwProject.tests.HelperClasses; - -import HwProject.src.Pipe; - -/** - * Pipe subclass for testing, only added setters and getters for each private and protected field - */ -public class TestPipe extends Pipe { - public TestPipe() { - super(); - } - - public int getWaterLevel() { - return waterLevel; - } - - public void setWaterLevel(int waterLevel) { - this.waterLevel = waterLevel; - } - - public static void setInstanceNr(int i) { - instanceNr = i; - } -} +package tests.HelperClasses; + +import src.*; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * Pipe subclass for testing, only added setters and getters for each private and protected field + */ +public class TestPipe extends Pipe { + public TestPipe() { + super(); + } + + public int getWaterLevel() { + return waterLevel; + } + + public void setWaterLevel(int waterLevel) { + this.waterLevel = waterLevel; + } + + public boolean getSplippy() { + return this.isSlippy; + } + + public StickyStates getSticky() { + return this.stickyState; + } + + public static void setInstanceNr(int i) { + instanceNr = i; + } + + public ArrayList getPlayers() { + return players; + } + + public boolean getDamage() { + return isDamaged; + } +} diff --git a/HwProject/tests/PumpTest.java b/HwProject/tests/PumpTest.java index 5092043..a092bc3 100644 --- a/HwProject/tests/PumpTest.java +++ b/HwProject/tests/PumpTest.java @@ -140,9 +140,6 @@ void testDisconnectPipe() { @AfterEach public void cleanUp() { - TestPump.setInstanceNr(0); - TestPipe.setInstanceNr(0); - TestSource.setInstanceNr(0); - TestDrain.setInstanceNr(0); + TestCleanup.cleanup(); } } \ No newline at end of file diff --git a/HwProject/tests/SourceTest.java b/HwProject/tests/SourceTest.java index 3695e16..d87bb84 100644 --- a/HwProject/tests/SourceTest.java +++ b/HwProject/tests/SourceTest.java @@ -58,9 +58,6 @@ public void testStepCallsPushWater() { @AfterEach public void cleanUp() { - TestPump.setInstanceNr(0); - TestPipe.setInstanceNr(0); - TestSource.setInstanceNr(0); - TestDrain.setInstanceNr(0); + TestCleanup.cleanup(); } } diff --git a/docs/Connect_pipe_fixed.png b/docs/Connect_pipe_fixed.png new file mode 100644 index 0000000..4dcf17d Binary files /dev/null and b/docs/Connect_pipe_fixed.png differ diff --git a/docs/Connect_pipe_wrong.PNG b/docs/Connect_pipe_wrong.PNG new file mode 100644 index 0000000..45a264d Binary files /dev/null and b/docs/Connect_pipe_wrong.PNG differ diff --git a/src/SaboteurTest.java b/src/SaboteurTest.java new file mode 100644 index 0000000..1d2a655 --- /dev/null +++ b/src/SaboteurTest.java @@ -0,0 +1,81 @@ +package src; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import tests.HelperClasses.TestCleanup; +import tests.HelperClasses.TestSaboteur; + +import static org.junit.jupiter.api.Assertions.*; + +class SaboteurTest { + private Game game; + + private TestSaboteur saboteur; + + @BeforeEach + public void setUp() { + game = new Game(System.out); + Pipe.SetGame(game); + Drain.SetGame(game); + saboteur = new TestSaboteur("Saboteur1", game.GetFieldByID("Drain1")); + } + + @Test + void move() { + saboteur.Move(game.GetFieldByID("Pipe12")); + assertEquals(game.GetFieldByID("Pipe12"), saboteur.getPosition()); + + TestSaboteur saboteur2 = new TestSaboteur("Saboteur2", game.GetFieldByID("Drain1")); + saboteur2.Move(game.GetFieldByID("Pipe12")); + assertEquals(game.GetFieldByID("Drain1"), saboteur2.getPosition()); + } + + @Test + void setPumpDirection() { + saboteur.Move(game.GetFieldByID("Pipe12")); + saboteur.Move(game.GetFieldByID("Pump5")); + saboteur.SetPumpDirection((Pipe) game.GetFieldByID("Pipe3"), (Pipe) game.GetFieldByID("Pipe10")); + assertEquals(game.GetFieldByID("Pipe10"), ((Pump) game.GetFieldByID("Pump5")).output); + assertEquals(game.GetFieldByID("Pipe3"), ((Pump) game.GetFieldByID("Pump5")).input); + } + + @Test + void damage() { + saboteur.Move(game.GetFieldByID("Pipe12")); + saboteur.Damage(); + assertTrue(((Pipe) game.GetFieldByID("Pipe12")).isDamaged); + } + + @Test + void makeSlippy() { + saboteur.Move(game.GetFieldByID("Pipe12")); + saboteur.MakeSlippy(); + assertTrue(((Pipe) game.GetFieldByID("Pipe12")).isSlippy); + } + + @Test + void makeSticky() { + } + + @Test + void testSetPumpDirection() { + } + + @Test + void testDamage() { + } + + @Test + void testMakeSlippy() { + } + + @Test + void testMakeSticky() { + } + + @AfterEach + public void cleanUp() { + TestCleanup.cleanup(); + } +} \ No newline at end of file diff --git a/tests/HelperClasses/TestCleanup.java b/tests/HelperClasses/TestCleanup.java new file mode 100644 index 0000000..088bd97 --- /dev/null +++ b/tests/HelperClasses/TestCleanup.java @@ -0,0 +1,11 @@ +package tests.HelperClasses; + +public class TestCleanup { + + public static void cleanup() { + TestPump.setInstanceNr(0); + TestPipe.setInstanceNr(0); + TestSource.setInstanceNr(0); + TestDrain.setInstanceNr(0); + } +} diff --git a/tests/HelperClasses/TestSaboteur.java b/tests/HelperClasses/TestSaboteur.java new file mode 100644 index 0000000..3a3ad4d --- /dev/null +++ b/tests/HelperClasses/TestSaboteur.java @@ -0,0 +1,12 @@ +package tests.HelperClasses; +import src.*; +public class TestSaboteur extends Saboteur { + + public TestSaboteur(String ID, Field position) { + super(ID, position); + } + + public Field getPosition() { + return position; + } +} diff --git a/tests/PipeTest.java b/tests/PipeTest.java new file mode 100644 index 0000000..41a37b7 --- /dev/null +++ b/tests/PipeTest.java @@ -0,0 +1,192 @@ +package tests; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import tests.HelperClasses.TestCleanup; + +import static org.junit.jupiter.api.Assertions.*; + +import src.*; +import tests.HelperClasses.*; + +class PipeTest { + + private TestPipe testPipe; + private TestPump pump1; + private TestPump pump2; + + private Game game; + + @BeforeEach + public void setUp() { + game = new Game(System.out); + testPipe = new TestPipe(); + pump1 = new TestPump(1); + pump2 = new TestPump(1); + Pipe.SetGame(game); + } + + @Test + void connectPipe() { + pump1.ConnectPipe(testPipe); + assertEquals(pump1, testPipe.getends().get(0)); + } + + @Test + void getID() { + // 13 pipes are already created in the game + assertEquals("Pipe14", testPipe.GetID()); + assertEquals("Pipe15", new TestPipe().GetID()); + } + + @Test + void makeSlippy() { + testPipe.MakeSlippy(); + assertSame(true, testPipe.getSplippy()); + } + + @Test + void makeSticky() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + testPipe.MakeSticky(); + assertSame(Pipe.StickyStates.StickyAndOccupied, testPipe.getSticky()); + } + + @Test + void step() { + } + + @Test + void isPlayerRemoveable() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + testPipe.MakeSticky(); + + Saboteur player = new Saboteur("Saboteur1", pump1); + player.Move(testPipe); + testPipe.MovePlayer(player); + assertEquals(1, testPipe.getPlayers().size()); + } + + @Test + void isPlayerAddable() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + testPipe.MakeSticky(); + + Saboteur player1 = new Saboteur("Saboteur1", pump1); + Saboteur player2 = new Saboteur("Saboteur2", pump1); + player1.Move(testPipe); + testPipe.MovePlayer(player1); + assertEquals(1, testPipe.getPlayers().size()); + testPipe.MovePlayer(player2); + assertEquals(1, testPipe.getPlayers().size()); + } + + @Test + void connectActive() { + // pump1 is connected to testPipe + pump1.ConnectPipe(testPipe); + // pump2 is connected to testPipe + pump2.ConnectPipe(testPipe); + assertEquals(2, testPipe.getends().size()); + } + + @Test + void disconnectActive() { + // pump1 is connected to testPipe + pump1.ConnectPipe(testPipe); + // pump2 is connected to testPipe + pump2.ConnectPipe(testPipe); + // pump1 is disconnected from testPipe + pump1.DisconnectPipe(testPipe); + assertEquals(1, testPipe.getends().size()); + } + + @Test + void recieveWater() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + + pump1.setWaterLevel(10); + pump1.setOutput(testPipe); + pump2.setInput(testPipe); + + pump1.Step(); + assertEquals(10, testPipe.getWaterLevel()); + } + + @Test + void transmitWater() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + + pump1.setWaterLevel(10); + pump1.setOutput(testPipe); + pump2.setInput(testPipe); + + pump1.Step(); + assertEquals(10, testPipe.getWaterLevel()); + testPipe.Step(); + pump2.Step(); + assertEquals(10, pump2.getWaterLevel()); + assertEquals(0, pump1.getWaterLevel()); + assertEquals(0, testPipe.getWaterLevel()); + } + + @Test + void spillWater() { + pump1.ConnectPipe(testPipe); + pump2.ConnectPipe(testPipe); + + pump1.setWaterLevel(10); + pump1.setOutput(testPipe); + pump2.setInput(testPipe); + + pump1.Step(); + assertEquals(10, testPipe.getWaterLevel()); + + pump2.DisconnectPipe(testPipe); + + pump1.setWaterLevel(10); + pump1.Step(); + + assertEquals(0, testPipe.getWaterLevel()); + } + + @Test + void damage() { + testPipe.Damage(); + assertTrue(testPipe.getDamage()); + } + + @Test + void repair() { + testPipe.Damage(); + testPipe.Repair(); + assertFalse(testPipe.getDamage()); + } + + @Test + void placePump() { + Drain drain = new Drain(); + Drain.SetGame(game); + pump1.ConnectPipe(testPipe); + drain.ConnectPipe(testPipe); + Mechanic player = new Mechanic("Mechanic1", drain); + player.PickUpPump(); + player.Move(testPipe); + Pump placedPump = player.GetPumpFromInventoryByID("Pump9"); + player.PlacePump(placedPump); + assertEquals(2, testPipe.getends().size()); + assertTrue(testPipe.getends().contains(placedPump)); + assertTrue(testPipe.getends().contains(drain)); + } + + @AfterEach + public void cleanUp() { + TestCleanup.cleanup(); + } +} \ No newline at end of file