def test_grouporder_items(self): m1 = assignment3.Menu() m2 = assignment3.Menu() o = assignment3.GroupOrder() d = assignment3.Drink("Lemonade", 1.50) f = assignment3.Food("Toast", 0.75) m1.add_item(d) m2.add_item(f) self.assertTrue(o.add_item(d)) self.assertFalse(o.add_item(f))
def test_applicable_tax(self): m = assignment3.Menu() d = assignment3.Drink("Lemonade", 1.50) f = assignment3.Food("Toast", 0.75) m.add_item(d) m.add_item(f) self.assertAlmostEqual(f._applicable_tax(), 0.10) self.assertAlmostEqual(d._applicable_tax(), 0.18)
def test_order_small(self): m = assignment3.Menu() o = assignment3.Order() f = assignment3.Food("Toast", 0.75) m.add_item(f) self.assertAlmostEqual(o.price_plus_tax(), 0) o.add_item(f) self.assertAlmostEqual(o.price_plus_tax(), 0.75 * 1.10)
def test_grouporder_price_over(self): m = assignment3.Menu() o = assignment3.GroupOrder() d = assignment3.Drink("Lemonade", 1.50) f = assignment3.Food("Toast", 0.75) m.add_item(d) m.add_item(f) o.add_item(d) o.add_item(f) self.assertAlmostEqual(o.price_plus_tax(), 1.50 * 1.18 + 0.75 * 1.10) self.assertAlmostEqual(o.price_plus_tax_and_tip(0.32), (1.50 * 1.18 + 0.75 * 1.10) * 1.32)
def test_order_large(self): m = assignment3.Menu() o = assignment3.Order() d = assignment3.Drink("Lemonade", 1.50) f = assignment3.Food("Toast", 0.75) a = assignment3.Food("A", 10.00) b = assignment3.Food("B", 9.50) m.add_item(d) m.add_item(f) m.add_item(a) m.add_item(b) o.add_item(d) o.add_item(f) o.add_item(a) o.add_item(b) self.assertAlmostEqual(o.price_plus_tax(), 1.50 * 1.18 + (0.75 + 10 + 9.5) * 1.10)
def test_grouporder_super_use(self): class DeliveredOrder(assignment3.Order): def price_plus_tax_and_tip(self, amount): return super().price_plus_tax_and_tip(amount) + 1.0 class GroupDeliveredOrder(assignment3.GroupOrder, DeliveredOrder): pass m = assignment3.Menu() o = GroupDeliveredOrder() d = assignment3.Drink("Lemonade", 1.50) f = assignment3.Food("Toast", 0.75) m.add_item(d) m.add_item(f) o.add_item(d) o.add_item(f) self.assertAlmostEqual(o.price_plus_tax_and_tip(0.20), (1.50 * 1.18 + 0.75 * 1.10) * 1.20 + 1.0)
def test_tax_attributes(self): m = assignment3.Menu() self.assertAlmostEqual(m.food_tax, 0.1) self.assertAlmostEqual(m.drink_tax, 0.18)