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_denest_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=-9999)

        expr = nest_wheres(expr1, expr2, expr3)

        exprs = denest_wheres(expr)
        self.assertIsInstance(exprs, list)

        e1,e2,e3 = exprs[:]
        self.assertEqual(expr1, e1)
        self.assertEqual(expr2, e2)
        self.assertEqual(expr3, e3)

        self.assertRaises(ValueError, denest_wheres, 'bob')
    def test_denest_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=-9999)

        expr = nest_wheres(expr1, expr2, expr3)

        exprs = denest_wheres(expr)
        self.assertIsInstance(exprs, list)

        e1, e2, e3 = exprs[:]
        self.assertEqual(expr1, e1)
        self.assertEqual(expr2, e2)
        self.assertEqual(expr3, e3)

        self.assertRaises(ValueError, denest_wheres, 'bob')
Esempio n. 5
0
 def content(self):
     if len(self._storage[0]) > 1:
         return nest_wheres(*[x for x in self._storage[0]])
     else:
         return self._storage[0][0]
 def content(self):
     if len(self._storage[0]) > 1:
         return nest_wheres(*[x for x in self._storage[0]])
     else:
         return self._storage[0][0]