From 7635c33d8aeb9e4d2c504bc6b31027844c90653b Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 23 Mar 2020 12:45:50 +0100 Subject: [PATCH] =?UTF-8?q?Gj=C3=B8r=20det=20mulig=20=C3=A5=20sjekke=20om?= =?UTF-8?q?=20to=20retninger=20st=C3=A5r=20rett=20p=C3=A5=20hverandre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../element_properties/Direction.java | 11 +++++++ .../element_properties/DirectionTest.java | 32 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/main/java/inf112/fiasko/roborally/element_properties/Direction.java b/src/main/java/inf112/fiasko/roborally/element_properties/Direction.java index 1cd11cc..484a62b 100644 --- a/src/main/java/inf112/fiasko/roborally/element_properties/Direction.java +++ b/src/main/java/inf112/fiasko/roborally/element_properties/Direction.java @@ -45,6 +45,17 @@ public enum Direction { return null; } + /** + * Checks whether two directions are perpendicular + * @param direction1 The first direction + * @param direction2 The second direction + * @return True if the directions are perpendicular + */ + public static boolean arePerpendicular(Direction direction1, Direction direction2) { + return direction1.equals(getLeftRotatedDirection(direction2)) || + direction1.equals(getRightRotatedDirection(direction2)); + } + /** * Gets the reverse of a direction * @param direction A direction diff --git a/src/test/java/inf112/fiasko/roborally/element_properties/DirectionTest.java b/src/test/java/inf112/fiasko/roborally/element_properties/DirectionTest.java index 357aa66..38e767f 100644 --- a/src/test/java/inf112/fiasko/roborally/element_properties/DirectionTest.java +++ b/src/test/java/inf112/fiasko/roborally/element_properties/DirectionTest.java @@ -8,7 +8,9 @@ import java.util.List; import java.util.Set; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; public class DirectionTest { @@ -176,4 +178,34 @@ public class DirectionTest { public void getLeftRotatedDirectionFromSouthWest() { assertEquals(Direction.SOUTH_EAST, Direction.getLeftRotatedDirection(Direction.SOUTH_WEST)); } + + @Test + public void eastAndWestArePerpendicular() { + assertFalse(Direction.arePerpendicular(Direction.EAST, Direction.WEST)); + } + + @Test + public void eastAndNorthArePerpendicular() { + assertTrue(Direction.arePerpendicular(Direction.EAST, Direction.NORTH)); + } + + @Test + public void eastAndSouthArePerpendicular() { + assertTrue(Direction.arePerpendicular(Direction.EAST, Direction.SOUTH)); + } + + @Test + public void northAndSouthArePerpendicular() { + assertFalse(Direction.arePerpendicular(Direction.NORTH, Direction.SOUTH)); + } + + @Test + public void northAndWestArePerpendicular() { + assertTrue(Direction.arePerpendicular(Direction.NORTH, Direction.WEST)); + } + + @Test + public void southAndWestArePerpendicular() { + assertTrue(Direction.arePerpendicular(Direction.SOUTH, Direction.WEST)); + } }