Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 def test_menu_add_items(self):
     m1 = assignment3.Menu()
     m2 = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     f = assignment3.Food("Toast", 0.75)
     self.assertTrue(m1.add_item(d))
     self.assertTrue(m2.add_item(f))
     self.assertFalse(m2.add_item(d))
     self.assertFalse(m1.add_item(f))
Пример #5
0
 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))
Пример #6
0
 def test_menu_add_items2(self):
     m1 = assignment3.Menu()
     m2 = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     f = assignment3.Food("Toast", 0.75)
     m1.add_item(d)
     m2.add_item(f)
     m2.add_item(d)
     m1.add_item(f)
     self.assertNotIn(d, m2.items)
     self.assertNotIn(f, m1.items)
Пример #7
0
 def test_menu_items_copy(self):
     m = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     f = assignment3.Food("Toast", 0.75)
     m.add_item(d)
     self.assertIsNot(m.items, m.items)
     it = m.items
     if hasattr(it, "add"):
         it.add(f)
     if hasattr(it, "append"):
         it.append(f)
     self.assertEqual(list(m.items), [d])
Пример #8
0
 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)
Пример #9
0
    def test_alternate_tax(self):
        class MyMenu(assignment3.Menu):
            food_tax = 0.12
            drink_tax = 0.16

        m = MyMenu()
        d = assignment3.Drink("Lemonade", 1.50)
        f = assignment3.Food("Toast", 0.75)
        m.add_item(d)
        m.add_item(f)
        self.assertAlmostEqual(f.price_plus_tax(), 0.75 * 1.12)
        self.assertAlmostEqual(d.price_plus_tax(), 1.50 * 1.16)
        self.assertAlmostEqual(f._applicable_tax(), 0.12)
        self.assertAlmostEqual(d._applicable_tax(), 0.16)
Пример #10
0
    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)
Пример #11
0
    def test_additional_item_type(self):
        class MyMenu(assignment3.Menu):
            dessert_tax = 0.05

        m = MyMenu()
        f = assignment3.Food("Toast", 0.75)
        m.add_item(f)

        class Dessert(assignment3.Item):
            def _applicable_tax(self):
                return self.menu.dessert_tax

        d = Dessert("PI", 1.50)
        m.add_item(d)

        self.assertAlmostEqual(f.price_plus_tax(), 0.75 * 1.10)
        self.assertAlmostEqual(d.price_plus_tax(), 1.50 * 1.05)
        self.assertAlmostEqual(f._applicable_tax(), 0.10)
        self.assertAlmostEqual(d._applicable_tax(), 0.05)
Пример #12
0
 def test_food_prop(self):
     m = assignment3.Menu()
     d = assignment3.Food("Lemonade", 1.50)
     m.add_item(d)
     self.assertAlmostEqual(d.price_plus_tax(), 1.50 * 1.10)
     self.assertEqual(d.menu, m)
Пример #13
0
 def test_food_attr(self):
     d = assignment3.Food("Lemonade", 1.50)
     self.assertAlmostEqual(d.price, 1.50)