# HG changeset patch # User Sylvain Thénault <sylvain.thenault@logilab.fr> # Date 1378896979 -7200 # Wed Sep 11 12:56:19 2013 +0200 # Branch stable # Node ID 91c4cbe2eeb39e1075fefd7266d94f08c83d8527 # Parent a3ddccf19ded09c1614124c94536c55d612143f8 [test] extend a bit add_type_restriction tests diff --git a/test/unittest_nodes.py b/test/unittest_nodes.py --- a/test/unittest_nodes.py +++ b/test/unittest_nodes.py @@ -62,27 +62,34 @@ self.simplify = helper.simplify def test_add_is_type_restriction(self): - tree = self.parse('Any X WHERE X is Person') + tree = self.parse("Any X WHERE X is Person, X name ILIKE 'A%'") select = tree.children[0] x = select.get_selected_variables().next() self.assertRaises(RQLException, select.add_type_restriction, x.variable, 'Babar') select.add_type_restriction(x.variable, 'Person') - self.assertEqual(tree.as_string(), 'Any X WHERE X is Person') + self.assertEqual(tree.as_string(), "Any X WHERE X is Person, X name ILIKE 'A%'") def test_add_new_is_type_restriction_in(self): + tree = self.parse("Any X WHERE X is IN(Person, Company), X name ILIKE 'A%'") + select = tree.children[0] + x = select.get_selected_variables().next() + select.add_type_restriction(x.variable, 'Company') + # implementation is KISS (the IN remains) + self.assertEqual(tree.as_string(), "Any X WHERE X is IN(Company), X name ILIKE 'A%'") + + def test_add_new_is_type_restriction_in_nonregr(self): tree = self.parse('Any X WHERE X is IN(Person, Company, Student)') select = tree.children[0] x = select.get_selected_variables().next() select.add_type_restriction(x.variable, 'Person') - # implementation is KISS (the IN remains) self.assertEqual(tree.as_string(), 'Any X WHERE X is IN(Person)') def test_add_is_in_type_restriction(self): - tree = self.parse('Any X WHERE X is IN(Person, Company)') + tree = self.parse("Any X WHERE X is IN(Person, Company), X name ILIKE 'A%'") select = tree.children[0] x = select.get_selected_variables().next() self.assertRaises(RQLException, select.add_type_restriction, x.variable, 'Babar') - self.assertEqual(tree.as_string(), 'Any X WHERE X is IN(Person, Company)') + self.assertEqual(tree.as_string(), "Any X WHERE X is IN(Person, Company), X name ILIKE 'A%'") # XXX a full schema is needed, see test in cw/server/test/unittest_security # def test_add_is_against_isintance_type_restriction(self):