Skip to content

Commit 1c93014

Browse files
authored
feat: adds Benjamin's custom data types (code-differently#577)
* updating main * started creating Restaurant class and tests * finished restaurant class and tests that all pass * Delete lesson_04/benjaminscott/bscottREADME.md * Delete lesson_06/benjaminscott/jest.config.js * Delete lesson_06/benjaminscott/jest.config.json * Delete package.json * Delete package-lock.json * Delete lesson_06/benjaminscott/stretchfunc.test.ts * Delete lesson_06/benjaminscott/stretchfunc.ts * Delete lesson_06/benjaminscott/tsconfig.json * Ran './gradlew :objects_app:spotlessApply' to fix errors in github * Ran './gradlew :objects_app:spotlessApply' to fix errors in github * Ran './gradlew :objects_app:spotlessApply' to fix errors in github * Ran './gradlew :objects_app:spotlessApply' to fix errors in github * Ran './gradlew :objects_app:spotlessApply' to fix errors in github again
1 parent ccf8696 commit 1c93014

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.codedifferently.lesson16.benjaminscott;
2+
3+
public class Restaurant {
4+
private String name;
5+
private String[] menuitems = new String[5];
6+
private int tableCapacity = 20;
7+
private int currentTables;
8+
private boolean isOpen;
9+
10+
public enum RestaurantType {
11+
FAST_FOOD,
12+
CASUAL_DINING,
13+
FINE_DINING,
14+
CAFE,
15+
BUFFET
16+
}
17+
18+
public Restaurant(
19+
String name, String[] menuitems, int tableCapacity, int currentTables, boolean isOpen) {
20+
this.name = name;
21+
this.menuitems = menuitems;
22+
this.tableCapacity = tableCapacity;
23+
this.currentTables = currentTables;
24+
this.isOpen = isOpen;
25+
}
26+
27+
public String getName() {
28+
return name;
29+
}
30+
31+
public String[] getMenuitems() {
32+
return menuitems;
33+
}
34+
35+
public int getTableCapacity() {
36+
return tableCapacity;
37+
}
38+
39+
public int getCurrentTables() {
40+
return currentTables;
41+
}
42+
43+
public boolean isOpen() {
44+
return isOpen;
45+
}
46+
47+
public void checkCapacity() {
48+
if (currentTables == tableCapacity) {
49+
isOpen = false;
50+
}
51+
}
52+
53+
public void checkIfOpen() {
54+
if (!isOpen) {
55+
throw new RestaurantNotOpen("The restaurant is currently not open.");
56+
}
57+
}
58+
59+
public boolean addMenuItem(String item) {
60+
if (!isOpen) {
61+
return false;
62+
}
63+
for (int i = 0; i < menuitems.length; i++) {
64+
if (menuitems[i] == null) {
65+
menuitems[i] = item;
66+
return true;
67+
}
68+
}
69+
return false;
70+
}
71+
72+
public String displayMenu() {
73+
StringBuilder menu = new StringBuilder("Menu Items:\n");
74+
for (String item : menuitems) {
75+
if (item != null) {
76+
menu.append("- ").append(item).append("\n");
77+
}
78+
}
79+
return menu.toString();
80+
}
81+
82+
public boolean seatGuests(int numberOfGuests) {
83+
if (!isOpen || numberOfGuests <= 0) {
84+
return false;
85+
}
86+
if (currentTables + 1 <= tableCapacity) {
87+
currentTables++;
88+
return true;
89+
}
90+
return false;
91+
}
92+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.codedifferently.lesson16.benjaminscott;
2+
3+
public class RestaurantNotOpen extends RuntimeException {
4+
public RestaurantNotOpen(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package com.codedifferently.lesson16.benjaminscott;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertTrue;
6+
7+
import org.junit.jupiter.api.Test;
8+
9+
class RestaurantTest {
10+
11+
@Test
12+
void testAddMenuItem() {
13+
String[] initialMenu = new String[5];
14+
Restaurant restaurant = new Restaurant("Test Restaurant", initialMenu, 20, 0, true);
15+
16+
boolean firstAdd = restaurant.addMenuItem("Burger");
17+
boolean secondAdd = restaurant.addMenuItem("Pizza");
18+
19+
assertTrue(firstAdd, "Should successfully add first item");
20+
assertTrue(secondAdd, "Should successfully add second item");
21+
String[] menu = restaurant.getMenuitems();
22+
assertEquals("Burger", menu[0]);
23+
assertEquals("Pizza", menu[1]);
24+
}
25+
26+
@Test
27+
void testDisplayMenu() {
28+
String[] initialMenu = {"Burger", "Pizza", null, null, null};
29+
Restaurant restaurant = new Restaurant("Test Restaurant", initialMenu, 20, 0, true);
30+
31+
String displayedMenu = restaurant.displayMenu();
32+
33+
assertTrue(displayedMenu.contains("Burger"));
34+
assertTrue(displayedMenu.contains("Pizza"));
35+
}
36+
37+
@Test
38+
void testSeatGuests() {
39+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 20, 0, true);
40+
boolean seated = restaurant.seatGuests(4);
41+
assertTrue(seated, "Should successfully seat guests");
42+
assertEquals(1, restaurant.getCurrentTables());
43+
}
44+
45+
@Test
46+
void testSeatGuestsWhenFull() {
47+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 1, 1, true);
48+
boolean seated = restaurant.seatGuests(4);
49+
assertFalse(seated, "Should not seat guests when full");
50+
assertEquals(1, restaurant.getCurrentTables());
51+
}
52+
53+
@Test
54+
void testAddMenuItemWhenClosed() {
55+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 20, 0, false);
56+
boolean added = restaurant.addMenuItem("Burger");
57+
assertFalse(added, "Should not add items when restaurant is closed");
58+
String[] menu = restaurant.getMenuitems();
59+
assertEquals(null, menu[0]);
60+
}
61+
62+
@Test
63+
void testAddMenuItemWhenFull() {
64+
String[] initialMenu = {"Item1", "Item2", "Item3", "Item4", "Item5"};
65+
Restaurant restaurant = new Restaurant("Test Restaurant", initialMenu, 20, 0, true);
66+
boolean added = restaurant.addMenuItem("Extra Item");
67+
assertFalse(added, "Should not add items when menu is full");
68+
}
69+
70+
@Test
71+
void testCheckCapacityWhenNotFull() {
72+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 5, 3, true);
73+
restaurant.checkCapacity();
74+
assertTrue(restaurant.isOpen(), "Restaurant should remain open when not at capacity");
75+
}
76+
77+
@Test
78+
void testCheckCapacityWhenFull() {
79+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 5, 5, true);
80+
restaurant.checkCapacity();
81+
assertFalse(restaurant.isOpen(), "Restaurant should close when at capacity");
82+
}
83+
84+
@Test
85+
void testSeatGuestsWithZeroGuests() {
86+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 20, 0, true);
87+
boolean seated = restaurant.seatGuests(0);
88+
assertFalse(seated, "Should not seat zero guests");
89+
assertEquals(0, restaurant.getCurrentTables(), "Table count should not change");
90+
}
91+
92+
@Test
93+
void testSeatGuestsWithNegativeGuests() {
94+
Restaurant restaurant = new Restaurant("Test Restaurant", new String[5], 20, 0, true);
95+
boolean seated = restaurant.seatGuests(-1);
96+
assertFalse(seated, "Should not seat negative number of guests");
97+
assertEquals(0, restaurant.getCurrentTables(), "Table count should not change");
98+
}
99+
100+
@Test
101+
void testDisplayEmptyMenu() {
102+
String[] emptyMenu = new String[5];
103+
Restaurant restaurant = new Restaurant("Test Restaurant", emptyMenu, 20, 0, true);
104+
String displayedMenu = restaurant.displayMenu();
105+
assertEquals("Menu Items:\n", displayedMenu, "Empty menu should only show header");
106+
}
107+
108+
@Test
109+
void testRestaurantTypeValues() {
110+
Restaurant.RestaurantType[] types = Restaurant.RestaurantType.values();
111+
assertEquals(5, types.length, "Should have 5 restaurant types");
112+
assertEquals(Restaurant.RestaurantType.FAST_FOOD, types[0]);
113+
assertEquals(Restaurant.RestaurantType.CASUAL_DINING, types[1]);
114+
assertEquals(Restaurant.RestaurantType.FINE_DINING, types[2]);
115+
assertEquals(Restaurant.RestaurantType.CAFE, types[3]);
116+
assertEquals(Restaurant.RestaurantType.BUFFET, types[4]);
117+
}
118+
119+
@Test
120+
void testGetName() {
121+
String restaurantName = "Test Restaurant";
122+
Restaurant restaurant = new Restaurant(restaurantName, new String[5], 20, 0, true);
123+
assertEquals(
124+
restaurantName, restaurant.getName(), "getName should return the correct restaurant name");
125+
}
126+
}

0 commit comments

Comments
 (0)