def test_example(self):
        basket = FranciaBasket()
        receipt = Receipt()

        [basket.add_item(value) for value in self.value_input]

        basket.print_receipt(receipt)
        out = receipt.deliver().split('\n')

        i = 0
        for value in self.value_output:
            self.assertEqual(value, out[i])
            i += 1
 def setUp(self):
     self.orders = []
     self.tax = Decimal("0.0")
     self.total = Decimal("0.0")
     self.basket = FranciaBasket()
class TestBasketCommunicateWithReceiptCase(unittest.TestCase):

    def setUp(self):
        self.orders = []
        self.tax = Decimal("0.0")
        self.total = Decimal("0.0")
        self.basket = FranciaBasket()

    def set_orders(self, orders):
        self.orders = orders

    def set_tax(self, tax):
        self.tax = tax

    def set_total(self, total):
        self.total = total

    def test_print_receipt_empty_basket(self):

        self.basket.print_receipt(self)

        self.assertEqual(0, len(self.orders))
        self.assertEqual(Decimal('0.0'), self.tax)
        self.assertEqual(Decimal('0.0'), self.total)

    def test_print_receipt_two_no_taxed_items(self):
        self.basket.add_item('1 book at 10.02')
        self.basket.add_item('1 book at 10.08')

        self.basket.print_receipt(self)

        self.assertEqual(2, len(self.orders))
        self.assertEqual(Decimal('0.0'), self.tax)
        self.assertEqual(Decimal('20.10'), self.total)

    def test_print_receipt_taxed_items(self):
        self.basket.add_item('1 music CD at 10.00')
        self.basket.add_item('1 music CD at 10.00')

        self.basket.print_receipt(self)

        self.assertEqual(Decimal('2.0'), self.tax)
        self.assertEqual(Decimal('22.0'), self.total)

    def test_basket_orders_are_safe(self):
        self.basket.print_receipt(self)

        self.orders.append('invalid item')

        self.assertNotEqual(len(self.basket.orders()), len(self.orders))