예제 #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_item_menu(self):
     m = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     d.menu = m
     try:
         d.menu = assignment3.Menu()
     except:
         pass
     self.assertIs(d.menu, m)
예제 #3
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))
예제 #4
0
 def test_menu_items(self):
     m = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     m.add_item(d)
     self.assertIs(d.menu, m)
     self.assertEqual(list(m.items), [d])
     with self.assertRaises(AttributeError):
         m.items = [None]
     self.assertEqual(list(m.items), [d])
예제 #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_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)
예제 #11
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)
예제 #12
0
 def test_drink_prop(self):
     m = assignment3.Menu()
     d = assignment3.Drink("Lemonade", 1.50)
     m.add_item(d)
     self.assertAlmostEqual(d.price_plus_tax(), 1.50 * 1.18)
     self.assertEqual(d.menu, m)
예제 #13
0
 def test_drink_attr(self):
     d = assignment3.Drink("Lemonade", 1.50)
     self.assertAlmostEqual(d.price, 1.50)