/** * This tests the cashier under very simple terms: one customer is ready to pay the exact bill. */ public void testInitializationTest() { // tests to ensure Cashier is constructed properly //CHANGE // customer1.cashier = cashier;//You can do almost anything in a unit test. // check preconditions assertEquals( "Cashier should have 0 customers in it. It doesn't.", cashier.getMyCustomers().size(), 0); assertEquals("Cashier did not start with 500 money", cashier.getMoney(), 500.0); // CHANGE assertEquals("marketPayments list did not start empty", cashier.getMarketPayments().size(), 0); assertEquals("myCustomers list did not start at size zero", cashier.getMyCustomers().size(), 0); assertEquals("menuMap did not start with 4 items in it", cashier.getPriceMenu().size(), 4); }
public void testNotEnoughMoneyToPayMarket() { cashier.msgRequestPayment(market1, 2000); // STEP 1 OF TEST assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 1); assertTrue("Cashier should start with 1000 money, but did not", cashier.getMoney() == 1000); // STEP 2 assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(0).getMarket() == market1); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(0).getAmount() == 2000); // STEP 3 assertTrue("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction()); assertEquals("Money was not taken correctly out of cashier's money", cashier.getMoney(), 0.0); // STEP 5 assertTrue( "Market did not receive correct payment", market1.log.containsString("I have received payment of amount " + 1000)); assertTrue( "Size of marketPayments is not 0 when it should be", cashier.getMarketPayments().isEmpty()); }
public void testOneMarketInteraction() { // (1) market sends message msgRequestPayment to cashier // (2) cashier receives message, and a new MarketPayemtn is created with market m and amount // (3) scheduler is activated, returns true // (4) cashier sends message msgHereIsPayment to Market m // (5) Used MarketPayment is removed, marketPayments list is empty cashier.msgRequestPayment(market1, 7); // STEP 1 OF TEST assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 1); assertTrue("Cashier should start with 1000 money, but did not", cashier.getMoney() == 1000); // STEP 2 assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(0).getMarket() == market1); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(0).getAmount() == 7); // STEP 3 assertTrue("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction()); assertTrue("Money was not taken correctly out of cashier's money", cashier.getMoney() == 993); // STEP 5 assertTrue( "Market did not receive correct payment", market1.log.containsString("I have received payment of amount " + 7)); assertTrue( "Size of marketPayments is not 0 when it should be", cashier.getMarketPayments().isEmpty()); }
public void testOneNormalCustomerScenario() { assertEquals("myCustomers list should start at zero", cashier.getMyCustomers().size(), 0); // cashier will FIRST be sent message from waiter, // then will check sched, // then will perform action calculateBill //// test for price being correct then new msg sent to waiter cashier.msgComputeBill(customer1, "Krabby Patty", waiter); assertEquals("size of myCustomers list is not 1", cashier.getMyCustomers().size(), 1); assertEquals( "myCustomer list has stored incorrect customer", cashier.getMyCustomers().get(0).getCustomer(), customer1); assertEquals( "muCustomer list has stored incorrect waiter", cashier.getMyCustomers().get(0).getWaiter(), waiter); assertTrue( "myCustomer list has stored wrong choice", cashier.getMyCustomers().get(0).getChoice().equals("Krabby Patty")); assertEquals( "myCustomer list has stored wrong payment", cashier.getMyCustomers().get(0).getPayment(), 0.0); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.doneEating); // INTERLEAVING OF OTHER MESSAGE TO SHOW IT DOESNT DISRUPT CASHIER cashier.msgRequestPayment(market1, 7); assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 1); assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(0).getMarket() == market1); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(0).getAmount() == 7); cashier.msgRequestPayment(market2, 23); assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 2); assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(1).getMarket() == market2); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(1).getAmount() == 23); // END INTERLEAVING // Test Scheduler assertEquals("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction(), true); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.waitingForCheck); // Test action and message sending assertTrue( "waiter did not receive message", waiter.log.containsString("received msgHereIsCheck from cashier" + 15.99)); cashier.msgHereIsMyPayment(customer1, 15.99); assertEquals("incorrect size of myCustomer list", cashier.getMyCustomers().size(), 1); assertEquals( "cash amount incorrectly transferred to MyCustomer", cashier.getMyCustomers().get(0).getPayment(), 15.99); assertEquals( "MyCustomer is in wrong state", cashier.getMyCustomers().get(0).getState(), customerState.paying); assertTrue("scheduler not returning true", cashier.pickAndExecuteAnAction()); assertTrue( "customer did not receive msgHereIsChange", customer1.log.containsString("I have received change " + 0)); assertEquals( "Cashier's money not updated with what customer paid", cashier.getMoney(), 1015.99); assertEquals( "MyCustomer in incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.leaving); // setUp() runs first before this test! // TODO check how to get cashier log when he is not a mock // assertEquals("CashierAgent should have an empty event log before the Cashier's // HereIsBill is called. Instead, the Cashier's event log reads: " // + cashier.log.toString(), 0, // cashier.log.size()); }
public void testTwoMarketInteraction() { cashier.msgRequestPayment(market1, 7); cashier.msgRequestPayment(market2, 14); // STEP 1 OF TEST assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 2); assertTrue("Cashier should start with 1000 money, but did not", cashier.getMoney() == 1000); // STEP 2 assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(0).getMarket() == market1); assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(1).getMarket() == market2); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(0).getAmount() == 7); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(1).getAmount() == 14); // STEP 3 assertTrue("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction()); assertTrue("Money was not taken correctly out of cashier's money", cashier.getMoney() == 993); assertTrue( "Market did not receive correct payment", market1.log.containsString("I have received payment of amount " + 7)); assertTrue( "Size of MarketPayments should have been reduced", cashier.getMarketPayments().size() == 1); // STEP 5 assertTrue("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction()); assertTrue("Money was not taken correctly out of cashier's money", cashier.getMoney() == 979); assertTrue( "Market did not receive correct payment", market2.log.containsString("I have received payment of amount " + 14)); assertTrue( "Size of marketPayments is not 0 when it should be", cashier.getMarketPayments().isEmpty()); }
public void testMultipleCustomerScenario() { // tests cashier working with multiple customers // simultaneously assertEquals("myCustomers list should start at zero", cashier.getMyCustomers().size(), 0); cashier.msgComputeBill(customer1, "Rice", waiter); assertEquals("size of myCustomers list is not 1", cashier.getMyCustomers().size(), 1); cashier.msgComputeBill(customer2, "Sushi", waiter); assertEquals("size of myCustomers list is not 2", cashier.getMyCustomers().size(), 2); assertEquals( "myCustomer list has stored incorrect customer", cashier.getMyCustomers().get(0).getCustomer(), customer1); assertEquals( "myCustomer list has stored incorrect customer", cashier.getMyCustomers().get(1).getCustomer(), customer2); assertEquals( "muCustomer list has stored incorrect waiter", cashier.getMyCustomers().get(0).getWaiter(), waiter); assertEquals( "muCustomer list has stored incorrect waiter", cashier.getMyCustomers().get(1).getWaiter(), waiter); assertTrue( "myCustomer list has stored wrong choice", cashier.getMyCustomers().get(0).getChoice().equals("Rice")); assertTrue( "myCustomer list has stored wrong choice", cashier.getMyCustomers().get(1).getChoice().equals("Sushi")); assertEquals( "myCustomer list has stored wrong payment", cashier.getMyCustomers().get(0).getPayment(), 0.0); assertEquals( "myCustomer list has stored wrong payment", cashier.getMyCustomers().get(1).getPayment(), 0.0); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.doneEating); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(1).getState(), customerState.doneEating); // INTERLEAVING OF OTHER MESSAGE TO SHOW IT DOESNT DISRUPT CASHIER cashier.msgRequestPayment(market1, 7); assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 1); assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(0).getMarket() == market1); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(0).getAmount() == 7); cashier.msgRequestPayment(market2, 23); assertTrue( "Cashier's marketPayments list should not be empty after receiving Market's message", cashier.getMarketPayments().size() == 2); assertTrue( "marketPayment created does not have correct market in it", cashier.getMarketPayments().get(1).getMarket() == market2); assertTrue( "marketPayment amount is incorrect", cashier.getMarketPayments().get(1).getAmount() == 23); // END INTERLEAVING assertEquals("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction(), true); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.waitingForCheck); assertTrue( "waiter did not receive message", waiter.log.containsString("received msgHereIsCheck from cashier" + 10.99)); assertEquals("Cashier scheduler not returning true", cashier.pickAndExecuteAnAction(), true); assertEquals( "myCustomer has stored incorrect state", cashier.getMyCustomers().get(1).getState(), customerState.waitingForCheck); assertTrue( "waiter did not receive message", waiter.log.containsString("received msgHereIsCheck from cashier" + 5.99)); cashier.msgHereIsMyPayment(customer1, 10.99); cashier.msgHereIsMyPayment(customer2, 5.99); assertEquals("incorrect size of myCustomer list", cashier.getMyCustomers().size(), 2); assertEquals( "cash amount incorrectly transferred to MyCustomer", cashier.getMyCustomers().get(0).getPayment(), 10.99); assertEquals( "cash amount incorrectly transferred to MyCustomer", cashier.getMyCustomers().get(1).getPayment(), 5.99); assertEquals( "MyCustomer is in wrong state", cashier.getMyCustomers().get(0).getState(), customerState.paying); assertEquals( "MyCustomer is in wrong state", cashier.getMyCustomers().get(1).getState(), customerState.paying); assertTrue("scheduler not returning true", cashier.pickAndExecuteAnAction()); assertEquals( "Cashier's money not updated with what customer paid", cashier.getMoney(), 1010.99); assertTrue( "customer did not receive msgHereIsChange", customer1.log.containsString("I have received change " + 0)); assertEquals( "MyCustomer in incorrect state", cashier.getMyCustomers().get(0).getState(), customerState.leaving); assertTrue("scheduler not returning true", cashier.pickAndExecuteAnAction()); assertEquals( "Cashier's money not updated with what customer paid", cashier.getMoney(), 1016.98); assertTrue( "customer did not receive msgHereIsChange", customer2.log.containsString("I have received change " + 0)); assertEquals( "MyCustomer in incorrect state", cashier.getMyCustomers().get(1).getState(), customerState.leaving); }