Welcome, guest | Sign In | My Account | Store | Cart
    def range_comparison(op, checks, value, default=None):
        """
        An extensible ternary operator
        Takes an operator such as op.lt
        checks are tuples of sentinel values and results and must be supplied in
        the right order to suit the operator and prevent it matching greedily.
        ie. with lt checks must be in ascending order and descending or for gt
        """
        for sentinel, result in checks:
            if op(value, sentinel):
                return result
        return default

    class TestRangeComparison(TestCase):
    
        def make_one(self):
            from ..utils import range_comparison
            return range_comparison
    
        def test_lt(self):
            from operator import lt
            FUT = self.make_one()
            checks = [(10, "less than 10"),
                      (20, "less than 20"),
                      (100, "less than 100")]
            self.assertEqual(FUT(lt, checks, 5), "less than 10")
            self.assertEqual(FUT(lt, checks, 10), "less than 20")
            self.assertEqual(FUT(lt, checks, 50), "less than 100")
            self.assertFalse(FUT(lt, checks, 100))

History