import org.junit.Test; import static org.junit.jupiter.api.Assertions.*; public class Tester { @Test public void feelGood() { // Everybody gets a trophy for playing. } @Test public void testInstantiation() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); } @Test public void testToString1() { Customer tracy = new Customer("Tracy", 24); assertEquals("Tracy", tracy.toString()); } @Test public void testUnderage() { Parlor parlor = new Parlor("Red Dragon"); Customer joey = new Customer("Joey", 5); try { parlor.makeAppointment(joey, "small"); } catch (UnderageException e) { return; } catch (AllBookedException e2) { fail("Allowed 5-year-old tattoo!"); } fail("Allowed 5-year-old tattoo!"); } @Test public void testOneSmallAppt() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); try { assertEquals(1,parlor.makeAppointment(tracy, "small")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Tracy")); } @Test public void testOneLargeAppt() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); try { assertEquals(1,parlor.makeAppointment(tracy, "large")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Tracy")); } @Test public void testTwoSmallAppts() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); try { assertEquals(1,parlor.makeAppointment(tracy, "small")); assertEquals(2,parlor.makeAppointment(biff, "small")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Tracy")); assertTrue(parlor.toString().contains("2pm: Biff")); } @Test public void testTwoLargeAppts() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); try { assertEquals(1,parlor.makeAppointment(tracy, "large")); assertEquals(3,parlor.makeAppointment(biff, "large")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Tracy")); assertTrue(parlor.toString().contains("3pm: Biff")); } @Test public void testSmallCancellation() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); try { assertEquals(1,parlor.makeAppointment(tracy, "small")); assertEquals(2,parlor.makeAppointment(biff, "small")); parlor.cancelAppointment(tracy); assertEquals(1,parlor.makeAppointment(suzie, "small")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Suzie")); assertTrue(parlor.toString().contains("2pm: Biff")); } @Test public void testLargeCancellation() { Parlor parlor = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); Customer chuck = new Customer("Chuck", 44); Customer jackie = new Customer("Jackie", 28); try { assertEquals(1,parlor.makeAppointment(tracy, "large")); assertEquals(3,parlor.makeAppointment(biff, "large")); parlor.cancelAppointment(tracy); assertEquals(1,parlor.makeAppointment(suzie, "small")); assertEquals(2,parlor.makeAppointment(chuck, "small")); assertEquals(5,parlor.makeAppointment(jackie, "large")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(parlor.toString().contains("Schedule for Lady Octopus")); assertTrue(parlor.toString().contains("1pm: Suzie")); assertTrue(parlor.toString().contains("2pm: Chuck")); assertTrue(parlor.toString().contains("3pm: Biff")); assertTrue(parlor.toString().contains("5pm: Jackie")); } @Test public void testMultipleParlors() { Parlor p1 = new Parlor("Lady Octopus"); Parlor p2 = new Parlor("Red Dragon"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); Customer chuck = new Customer("Chuck", 44); Customer jackie = new Customer("Jackie", 28); Customer steve = new Customer("Steve", 34); Customer rich = new Customer("Rich", 60); Customer stacy = new Customer("Stacy", 32); try { assertEquals(1,p1.makeAppointment(biff, "large")); assertEquals(1,p2.makeAppointment(tracy, "large")); assertEquals(3,p2.makeAppointment(jackie, "small")); assertEquals(4,p2.makeAppointment(chuck, "large")); p2.cancelAppointment(tracy); assertEquals(1,p2.makeAppointment(stacy, "large")); assertEquals(3,p1.makeAppointment(suzie, "large")); assertEquals(6,p2.makeAppointment(rich, "large")); p1.cancelAppointment(suzie); assertEquals(3,p1.makeAppointment(steve, "small")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(p1.toString().contains("Schedule for Lady Octopus")); assertTrue(p1.toString().contains("1pm: Biff")); assertTrue(p1.toString().contains("3pm: Steve")); assertTrue(p2.toString().contains("Schedule for Red Dragon")); assertTrue(p2.toString().contains("1pm: Stacy")); assertTrue(p2.toString().contains("3pm: Jackie")); assertTrue(p2.toString().contains("4pm: Chuck")); assertTrue(p2.toString().contains("6pm: Rich")); } @Test public void testCancelSmall() { Parlor p1 = new Parlor("Lady Octopus"); Parlor p2 = new Parlor("Red Dragon"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); Customer chuck = new Customer("Chuck", 44); Customer jackie = new Customer("Jackie", 28); Customer rich = new Customer("Rich", 60); Customer stacy = new Customer("Stacy", 32); try { assertEquals(1,p1.makeAppointment(biff, "large")); assertEquals(1,p2.makeAppointment(tracy, "small")); assertEquals(2,p2.makeAppointment(jackie, "large")); assertEquals(4,p2.makeAppointment(chuck, "large")); p2.cancelAppointment(tracy); assertEquals(6,p2.makeAppointment(stacy, "large")); assertEquals(1,p2.makeAppointment(rich, "small")); } catch (Exception e) { fail("Failed appointment!"); } } @Test public void testAllBooked1() { Parlor p1 = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); Customer chuck = new Customer("Chuck", 44); Customer jackie = new Customer("Jackie", 28); Customer steve = new Customer("Steve", 34); Customer rich = new Customer("Rich", 60); Customer stacy = new Customer("Stacy", 32); Customer lauren = new Customer("Lauren", 22); Customer maryanne = new Customer("Mary Anne", 29); Customer glenn = new Customer("Glenn", 33); Customer byron = new Customer("Byron", 28); try { assertEquals(1,p1.makeAppointment(tracy, "small")); assertEquals(2,p1.makeAppointment(biff, "small")); assertEquals(3,p1.makeAppointment(suzie, "small")); assertEquals(4,p1.makeAppointment(chuck, "small")); assertEquals(5,p1.makeAppointment(jackie, "small")); assertEquals(6,p1.makeAppointment(steve, "small")); assertEquals(7,p1.makeAppointment(rich, "small")); assertEquals(8,p1.makeAppointment(stacy, "small")); assertEquals(9,p1.makeAppointment(lauren, "small")); assertEquals(10,p1.makeAppointment(maryanne, "small")); assertEquals(11,p1.makeAppointment(glenn, "small")); } catch (Exception e) { fail("Failed appointment!"); } boolean worked = false; try { p1.makeAppointment(byron, "small"); worked = true; } catch (Exception e) { } if (worked) { fail("Allowed overbooked appointment!"); } assertTrue(p1.toString().contains("Schedule for Lady Octopus")); assertTrue(p1.toString().contains("1pm: Tracy")); assertTrue(p1.toString().contains("2pm: Biff")); assertTrue(p1.toString().contains("3pm: Suzie")); assertTrue(p1.toString().contains("4pm: Chuck")); assertTrue(p1.toString().contains("5pm: Jackie")); assertTrue(p1.toString().contains("6pm: Steve")); assertTrue(p1.toString().contains("7pm: Rich")); assertTrue(p1.toString().contains("8pm: Stacy")); assertTrue(p1.toString().contains("9pm: Lauren")); assertTrue(p1.toString().contains("10pm: Mary Anne")); assertTrue(p1.toString().contains("11pm: Glenn")); } @Test public void testAllBooked2() { Parlor p1 = new Parlor("Lady Octopus"); Customer tracy = new Customer("Tracy", 24); Customer biff = new Customer("Biff", 19); Customer suzie = new Customer("Suzie", 21); Customer chuck = new Customer("Chuck", 44); Customer jackie = new Customer("Jackie", 28); Customer steve = new Customer("Steve", 34); Customer rich = new Customer("Rich", 60); Customer stacy = new Customer("Stacy", 32); Customer lauren = new Customer("Lauren", 22); Customer maryanne = new Customer("Mary Anne", 29); Customer glenn = new Customer("Glenn", 33); Customer byron = new Customer("Byron", 28); try { assertEquals(1,p1.makeAppointment(tracy, "large")); assertEquals(3,p1.makeAppointment(biff, "large")); assertEquals(5,p1.makeAppointment(suzie, "large")); assertEquals(7,p1.makeAppointment(chuck, "large")); assertEquals(9,p1.makeAppointment(jackie, "large")); } catch (Exception e) { fail("Failed appointment!"); } boolean worked = false; try { p1.makeAppointment(byron, "large"); worked = true; } catch (Exception e) { } if (worked) { fail("Allowed overbooked appointment!"); } try { assertEquals(11,p1.makeAppointment(byron, "small")); } catch (Exception e) { fail("Failed appointment!"); } assertTrue(p1.toString().contains("Schedule for Lady Octopus")); assertTrue(p1.toString().contains("1pm: Tracy")); assertTrue(p1.toString().contains("3pm: Biff")); assertTrue(p1.toString().contains("5pm: Suzie")); assertTrue(p1.toString().contains("7pm: Chuck")); assertTrue(p1.toString().contains("9pm: Jackie")); assertTrue(p1.toString().contains("11pm: Byron")); } }