Esempio n. 1
0
    def testThirdsUneven(self):
        d = {
            1: Decimal("10.00"),
            2: Decimal("10.00"),
            3: Decimal("3.00"),
        }

        s = Discount.apply_even_split(d, Decimal("10.00"))
        self.assertEqual(s[1], Decimal("3.51"))
        self.assertEqual(s[2], Decimal("3.50"))
        self.assertEqual(s[3], Decimal("3.00"))
Esempio n. 2
0
    def testLargeThirds(self):
        d = {
            1 : Decimal("100.00"),
            2 : Decimal("100.00"),
            3 : Decimal("100.00"),
        }

        s = Discount.apply_even_split(d, Decimal("100.00"))
        self.assertEqual(s[1], Decimal("33.34"))
        self.assertEqual(s[2], Decimal("33.33"))
        self.assertEqual(s[3], Decimal("33.33"))
Esempio n. 3
0
    def testLargeThirds(self):
        d = {
            1: Decimal("100.00"),
            2: Decimal("100.00"),
            3: Decimal("100.00"),
        }

        s = Discount.apply_even_split(d, Decimal("100.00"))
        self.assertEqual(s[1], Decimal("33.34"))
        self.assertEqual(s[2], Decimal("33.33"))
        self.assertEqual(s[3], Decimal("33.33"))
Esempio n. 4
0
    def testThirdsUneven(self):
        d = {
            1 : Decimal("10.00"),
            2 : Decimal("10.00"),
            3 : Decimal("3.00"),
        }

        s = Discount.apply_even_split(d, Decimal("10.00"))
        self.assertEqual(s[1], Decimal("3.50"))
        self.assertEqual(s[2], Decimal("3.50"))
        self.assertEqual(s[3], Decimal("3.00"))
Esempio n. 5
0
    def testEvenSplitOneTooSmall(self):
        """Test when one of the items is maxed, but others are OK"""
        d = {
            1: Decimal("10.00"),
            2: Decimal("5.00"),
            3: Decimal("10.00"),
            4: Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("23.00"))
        self.assertEqual(s[1], Decimal("6.00"))
        self.assertEqual(s[2], Decimal("5.00"))
        self.assertEqual(s[3], Decimal("6.00"))
        self.assertEqual(s[4], Decimal("6.00"))
Esempio n. 6
0
    def testEvenSplitEqual(self):
        """Test when amount is exactly equal"""
        d = {
            1: Decimal("10.00"),
            2: Decimal("10.00"),
            3: Decimal("10.00"),
            4: Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("40.00"))
        self.assertEqual(s[1], Decimal("10.00"))
        self.assertEqual(s[2], Decimal("10.00"))
        self.assertEqual(s[3], Decimal("10.00"))
        self.assertEqual(s[4], Decimal("10.00"))
Esempio n. 7
0
    def testEvenSplitTooMuch(self):
        """Test when amount is greater than total"""
        d = {
            1: Decimal("10.00"),
            2: Decimal("10.00"),
            3: Decimal("10.00"),
            4: Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("50.00"))
        self.assertEqual(s[1], Decimal("10.00"))
        self.assertEqual(s[2], Decimal("10.00"))
        self.assertEqual(s[3], Decimal("10.00"))
        self.assertEqual(s[4], Decimal("10.00"))
Esempio n. 8
0
    def testEvenSplit1(self):
        """Simple split test"""
        d = {
            1: Decimal("10.00"),
            2: Decimal("10.00"),
            3: Decimal("10.00"),
            4: Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("16.00"))
        self.assertEqual(s[1], Decimal("4.00"))
        self.assertEqual(s[2], Decimal("4.00"))
        self.assertEqual(s[3], Decimal("4.00"))
        self.assertEqual(s[4], Decimal("4.00"))
Esempio n. 9
0
 def assert_apply_even_split(self, input_str, amount_str, expect_str):
     """
     Method which simplifies many similar tests to be written more compact on one line
     Example: the following line does the same as the method ``testEvenSplit1``.
     > > > self.assert_apply_even_split('10 10 10 10', '16', '4.00 4.00 4.00 4.00')
     """
     ddd = input_str.split()
     dd = map(lambda x: Decimal(str(x)).quantize(Decimal("0.01")), ddd)
     d = dict(enumerate(dd))
     amount = Decimal(str(amount_str)).quantize(Decimal("0.01"))
     s = Discount.apply_even_split(d, amount)
     self.assertEqual(s.keys(), d.keys())
     output_str = ' '.join(map(lambda (k, v): str(v), sorted(s.items())))
     self.assertEqual(output_str, expect_str)
Esempio n. 10
0
    def testEvenSplitOneTooSmall(self):
        """Test when one of the items is maxed, but others are OK"""
        d = {
            1 : Decimal("10.00"),
            2 : Decimal("5.00"),
            3 : Decimal("10.00"),
            4 : Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("23.00"))
        self.assertEqual(s[1], Decimal("6.00"))
        self.assertEqual(s[2], Decimal("5.00"))
        self.assertEqual(s[3], Decimal("6.00"))
        self.assertEqual(s[4], Decimal("6.00"))
Esempio n. 11
0
    def testEvenSplitEqual(self):
        """Test when amount is exactly equal"""
        d = {
            1 : Decimal("10.00"),
            2 : Decimal("10.00"),
            3 : Decimal("10.00"),
            4 : Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("40.00"))
        self.assertEqual(s[1], Decimal("10.00"))
        self.assertEqual(s[2], Decimal("10.00"))
        self.assertEqual(s[3], Decimal("10.00"))
        self.assertEqual(s[4], Decimal("10.00"))
Esempio n. 12
0
    def testEvenSplitTooMuch(self):
        """Test when amount is greater than total"""
        d = {
            1 : Decimal("10.00"),
            2 : Decimal("10.00"),
            3 : Decimal("10.00"),
            4 : Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("50.00"))
        self.assertEqual(s[1], Decimal("10.00"))
        self.assertEqual(s[2], Decimal("10.00"))
        self.assertEqual(s[3], Decimal("10.00"))
        self.assertEqual(s[4], Decimal("10.00"))
Esempio n. 13
0
    def testEvenSplit1(self):
        """Simple split test"""
        d = {
            1 : Decimal("10.00"),
            2 : Decimal("10.00"),
            3 : Decimal("10.00"),
            4 : Decimal("10.00"),
        }

        s = Discount.apply_even_split(d, Decimal("16.00"))
        self.assertEqual(s[1], Decimal("4.00"))
        self.assertEqual(s[2], Decimal("4.00"))
        self.assertEqual(s[3], Decimal("4.00"))
        self.assertEqual(s[4], Decimal("4.00"))
Esempio n. 14
0
 def assert_apply_even_split(self, input_str, amount_str, expect_str):
     """
     Method which simplifies many similar tests to be written more compact on one line
     Example: the following line does the same as the method ``testEvenSplit1``.
     > > > self.assert_apply_even_split('10 10 10 10', '16', '4.00 4.00 4.00 4.00')
     """
     ddd = input_str.split()
     dd = map(lambda x: Decimal(str(x)).quantize(Decimal("0.01")), ddd)
     d = dict(enumerate(dd))
     amount = Decimal(str(amount_str)).quantize(Decimal("0.01"))
     s = Discount.apply_even_split(d, amount)
     self.assertEqual(s.keys(), d.keys())
     output_str = ' '.join(map(lambda (k, v): str(v), sorted(s.items())))
     self.assertEqual(output_str, expect_str)