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')
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]