From be2c94b8c5d7b8fee29401c5c74e16c68ae621d6 Mon Sep 17 00:00:00 2001
From: joeappleton18 <joeappleton18@gmail.com>
Date: Wed, 31 Jan 2024 11:35:53 +0000
Subject: [PATCH] completed task

---
 src/main/java/l_1/House.java        | 23 +++++++++++++++++----
 src/main/java/l_1/HouseBuilder.java |  1 -
 src/test/java/l_1/HouseTest.java    | 31 +++++++++++++++++++++++------
 3 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/src/main/java/l_1/House.java b/src/main/java/l_1/House.java
index e086f98..fdb4112 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 d8a1426..f481f3e 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 b9bb0ed..de66789 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
-- 
GitLab