Пример #1
0
    def test_nest_wheres(self):
        expr1 = make_range_expr(val=-888, max=0, max_incl=False)
        expr2 = make_range_expr(val=111, min=0, min_incl=True, max=10, max_incl=False)
        expr3 = make_range_expr(val=222, max=20, max_incl=False, else_val=-999)

        # Tests that expressions are nested properly
        expr = nest_wheres(expr1, expr2, expr3)
        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)))'
        self.assertEqual(s, expr)
        self.assertTrue(is_nested_where(expr))
        self.assertTrue(is_well_formed_nested(expr))

        # Tests that invalid expressions are thrown out
        expr = nest_wheres('should not be included', expr1, expr2, 'where(also not included)', expr3)
        self.assertEqual(s, expr)
        self.assertTrue(is_nested_where(expr))
        self.assertTrue(is_well_formed_where(expr))
        self.assertTrue(is_well_formed_nested(expr))

        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)])'
        self.assertFalse(is_well_formed_nested(s))
        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(bad)))'
        self.assertFalse(is_well_formed_nested(s))

        self.assertRaises(IndexError, nest_wheres, 'bob')
    def test_nest_wheres(self):
        expr1 = make_range_expr(val=-888, max=0, max_incl=False)
        expr2 = make_range_expr(val=111,
                                min=0,
                                min_incl=True,
                                max=10,
                                max_incl=False)
        expr3 = make_range_expr(val=222, max=20, max_incl=False, else_val=-999)

        # Tests that expressions are nested properly
        expr = nest_wheres(expr1, expr2, expr3)
        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)))'
        self.assertEqual(s, expr)
        self.assertTrue(is_nested_where(expr))
        self.assertTrue(is_well_formed_nested(expr))

        # Tests that invalid expressions are thrown out
        expr = nest_wheres('should not be included', expr1, expr2,
                           'where(also not included)', expr3)
        self.assertEqual(s, expr)
        self.assertTrue(is_nested_where(expr))
        self.assertTrue(is_well_formed_where(expr))
        self.assertTrue(is_well_formed_nested(expr))

        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)])'
        self.assertFalse(is_well_formed_nested(s))
        s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(bad)))'
        self.assertFalse(is_well_formed_nested(s))

        self.assertRaises(IndexError, nest_wheres, 'bob')
    def test_make_range_expr(self):

        s = 'c*10'
        expr = make_range_expr(10)
        self.assertEqual(s, expr)

        s = 'where(x > 99, 8, -999)'
        expr = make_range_expr(8, min=99, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x >= 99, 8, -999)'
        expr = make_range_expr(8, min=99, min_incl=True, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x < 10, 100, -999)'
        expr = make_range_expr(100, max=10, max_incl=False, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x <= 10, 100, -999)'
        expr = make_range_expr(100, max=10, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where((x > 0) & (x <= 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x >= 0) & (x <= 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, min_incl=True, else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x >= 0) & (x < 100), 55, 100)'
        expr = make_range_expr(55,
                               min=0,
                               max=100,
                               min_incl=True,
                               max_incl=False,
                               else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x > 0) & (x < 100), 55, 100)'
        expr = make_range_expr(55,
                               min=0,
                               max=100,
                               min_incl=False,
                               max_incl=False,
                               else_val=100)
        self.assertEqual(s, expr)

        self.assertTrue(is_well_formed_where(expr))
        self.assertFalse(is_nested_where(expr))
        self.assertFalse(is_well_formed_nested(expr))
Пример #4
0
    def test_make_range_expr(self):

        s='c*10'
        expr = make_range_expr(10)
        self.assertEqual(s, expr)

        s = 'where(x > 99, 8, -999)'
        expr = make_range_expr(8, min=99, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x >= 99, 8, -999)'
        expr = make_range_expr(8, min=99, min_incl=True, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x < 10, 100, -999)'
        expr = make_range_expr(100, max=10, max_incl=False, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where(x <= 10, 100, -999)'
        expr = make_range_expr(100, max=10, else_val=-999)
        self.assertEqual(s, expr)

        s = 'where((x > 0) & (x <= 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x >= 0) & (x <= 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, min_incl=True, else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x >= 0) & (x < 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, min_incl=True, max_incl=False, else_val=100)
        self.assertEqual(s, expr)

        s = 'where((x > 0) & (x < 100), 55, 100)'
        expr = make_range_expr(55, min=0, max=100, min_incl=False, max_incl=False, else_val=100)
        self.assertEqual(s, expr)

        self.assertTrue(is_well_formed_where(expr))
        self.assertFalse(is_nested_where(expr))
        self.assertFalse(is_well_formed_nested(expr))