diff --git a/src/main/java/l_1/House.java b/src/main/java/l_1/House.java index e086f98505d2b4c51ebd71afe143d6d1585c3882..fdb41128c1f2a0127da948c5c963a3ced2f3ab9a 100644 --- a/src/main/java/l_1/House.java +++ b/src/main/java/l_1/House.java @@ -6,6 +6,7 @@ import java.util.List; public class House { private List<Room> rooms = new ArrayList<Room>(); + private boolean hasLounge = false; public House() { @@ -16,7 +17,21 @@ public class House { * * @param room */ - public void addRoom(Room room) { + public void addRoom(Room room) throws IllegalArgumentException{ + + if (room instanceof Lounge) { + + if (hasLounge) { + + throw new IllegalArgumentException("Error: Only one lounge allowed"); + + } else { + + this.hasLounge = true; + } + + } + this.rooms.add(room); } @@ -32,11 +47,11 @@ public class House { public double getTotalArea() { double total = 0.0; - - for (Room room: this.rooms) { + + for (Room room : this.rooms) { total += room.getArea(); } - + return total; } } diff --git a/src/main/java/l_1/HouseBuilder.java b/src/main/java/l_1/HouseBuilder.java index d8a1426b814c0b12c17ed46344de5ccaa1fd67e3..f481f3ec0a8b6e0d3abbe1fcfe7bba2bcf0dde24 100644 --- a/src/main/java/l_1/HouseBuilder.java +++ b/src/main/java/l_1/HouseBuilder.java @@ -11,7 +11,6 @@ public class HouseBuilder { House house = new House(); house.addRoom(lounge1); - house.addRoom(lounge2); house.addRoom(diningRoom); System.out.println("House number of rooms: " + house.howManyRooms()); diff --git a/src/test/java/l_1/HouseTest.java b/src/test/java/l_1/HouseTest.java index b9bb0edb7db4d7019c1a856ad27b7ba72785ced8..de667898f7b0817efa25ec1c296e8b7b32236a42 100644 --- a/src/test/java/l_1/HouseTest.java +++ b/src/test/java/l_1/HouseTest.java @@ -17,7 +17,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; */ class HouseTest { - private House house; + private House house; + @BeforeEach public void setUp() { @@ -25,22 +26,40 @@ class HouseTest { /** Set up a particular kind of house */ Lounge lounge1 = new Lounge(10.0); - Lounge lounge2 = new Lounge(15.0); DiningRoom dining1 = new DiningRoom(16.0); - Bedroom bedroom = new Bedroom(10); + Bedroom bedroom = new Bedroom(10.0); house.addRoom(lounge1); - house.addRoom(lounge2); house.addRoom(dining1); house.addRoom(bedroom); } + /*** + * 2. A house may be associated with many rooms but there can only be one lounge + */ + + @Test + public void testRequirement2() { + try { + + Lounge l2 = new Lounge(12.0); // Attempting to add a second lounge + house.addRoom(l2); + + // If the code reaches here without throwing an exception, you can fail the test + fail("Expected IllegalArgumentException, but it was not thrown."); + + } catch (IllegalArgumentException exception) { + // Asserting that the exception's message contains the expected error message + assertTrue(exception.getMessage().contains("Error: Only one lounge allowed")); + } + } + /** * 3. The house shall be able to display how many rooms it has. */ @Test void testRequirement3() { - assertEquals(house.howManyRooms(), 4); + assertEquals(house.howManyRooms(), 3); } /** @@ -48,7 +67,7 @@ class HouseTest { */; @Test void testRequirement4() { - assertEquals(house.getTotalArea(), 51.0); + assertEquals(house.getTotalArea(), 36.0); } @AfterEach