35 rqlst = self._prepare('Any A,B,C WHERE A eid 12,A comment B, A ?wf_info_for C') |
35 rqlst = self._prepare('Any A,B,C WHERE A eid 12,A comment B, A ?wf_info_for C') |
36 self.assertEquals(rqlst.defined_vars['A']._q_invariant, False) |
36 self.assertEquals(rqlst.defined_vars['A']._q_invariant, False) |
37 self.assert_(rqlst.defined_vars['B'].stinfo['attrvar']) |
37 self.assert_(rqlst.defined_vars['B'].stinfo['attrvar']) |
38 self.assertEquals(rqlst.defined_vars['C']._q_invariant, False) |
38 self.assertEquals(rqlst.defined_vars['C']._q_invariant, False) |
39 self.assertEquals(rqlst.solutions, [{'A': 'TrInfo', 'B': 'String', 'C': 'Affaire'}, |
39 self.assertEquals(rqlst.solutions, [{'A': 'TrInfo', 'B': 'String', 'C': 'Affaire'}, |
40 {'A': 'TrInfo', 'B': 'String', 'C': 'EUser'}, |
40 {'A': 'TrInfo', 'B': 'String', 'C': 'CWUser'}, |
41 {'A': 'TrInfo', 'B': 'String', 'C': 'Note'}]) |
41 {'A': 'TrInfo', 'B': 'String', 'C': 'Note'}]) |
42 |
42 |
43 def test_0_5(self): |
43 def test_0_5(self): |
44 rqlst = self._prepare('Any P WHERE N ecrit_par P, N eid 0') |
44 rqlst = self._prepare('Any P WHERE N ecrit_par P, N eid 0') |
45 self.assertEquals(rqlst.defined_vars['N']._q_invariant, False) |
45 self.assertEquals(rqlst.defined_vars['N']._q_invariant, False) |
174 rqlst = self._prepare('Any Y WHERE NOT Y evaluee X') |
174 rqlst = self._prepare('Any Y WHERE NOT Y evaluee X') |
175 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
175 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
176 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
176 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
177 |
177 |
178 def test_not_relation_4_4(self): |
178 def test_not_relation_4_4(self): |
179 rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y is EUser') |
179 rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y is CWUser') |
180 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
180 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
181 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
181 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
182 |
182 |
183 def test_not_relation_4_5(self): |
183 def test_not_relation_4_5(self): |
184 rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y eid %s, X is Note' % self.ueid) |
184 rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y eid %s, X is Note' % self.ueid) |
185 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
185 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
186 self.assertEquals(rqlst.solutions, [{'X': 'Note'}]) |
186 self.assertEquals(rqlst.solutions, [{'X': 'Note'}]) |
187 |
187 |
188 def test_not_relation_5_1(self): |
188 def test_not_relation_5_1(self): |
189 rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') |
189 rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') |
190 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
190 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
191 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
191 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
192 |
192 |
193 def test_not_relation_5_2(self): |
193 def test_not_relation_5_2(self): |
194 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') |
194 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') |
195 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
195 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
196 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
196 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
197 |
197 |
198 def test_not_relation_6(self): |
198 def test_not_relation_6(self): |
199 rqlst = self._prepare('Personne P where NOT P concerne A') |
199 rqlst = self._prepare('Personne P where NOT P concerne A') |
200 self.assertEquals(rqlst.defined_vars['P']._q_invariant, False) |
200 self.assertEquals(rqlst.defined_vars['P']._q_invariant, False) |
201 self.assertEquals(rqlst.defined_vars['A']._q_invariant, True) |
201 self.assertEquals(rqlst.defined_vars['A']._q_invariant, True) |
202 |
202 |
203 def test_not_relation_7(self): |
203 def test_not_relation_7(self): |
204 rqlst = self._prepare('Any K,V WHERE P is EProperty, P pkey K, P value V, NOT P for_user U') |
204 rqlst = self._prepare('Any K,V WHERE P is CWProperty, P pkey K, P value V, NOT P for_user U') |
205 self.assertEquals(rqlst.defined_vars['P']._q_invariant, False) |
205 self.assertEquals(rqlst.defined_vars['P']._q_invariant, False) |
206 self.assertEquals(rqlst.defined_vars['U']._q_invariant, True) |
206 self.assertEquals(rqlst.defined_vars['U']._q_invariant, True) |
207 |
207 |
208 def test_exists_1(self): |
208 def test_exists_1(self): |
209 rqlst = self._prepare('Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)') |
209 rqlst = self._prepare('Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)') |
219 rqlst = self._prepare('Any U WHERE EXISTS(X owned_by U, X bookmarked_by U)') |
219 rqlst = self._prepare('Any U WHERE EXISTS(X owned_by U, X bookmarked_by U)') |
220 self.assertEquals(rqlst.defined_vars['U']._q_invariant, False) |
220 self.assertEquals(rqlst.defined_vars['U']._q_invariant, False) |
221 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
221 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
222 |
222 |
223 def test_exists_4(self): |
223 def test_exists_4(self): |
224 rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') |
224 rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') |
225 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
225 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
226 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
226 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
227 |
227 |
228 def test_exists_5(self): |
228 def test_exists_5(self): |
229 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') |
229 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') |
230 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
230 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
231 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, True) |
231 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, True) |
232 |
232 |
233 def test_not_exists_1(self): |
233 def test_not_exists_1(self): |
234 rqlst = self._prepare('Any U WHERE NOT EXISTS(X owned_by U, X bookmarked_by U)') |
234 rqlst = self._prepare('Any U WHERE NOT EXISTS(X owned_by U, X bookmarked_by U)') |
235 self.assertEquals(rqlst.defined_vars['U']._q_invariant, False) |
235 self.assertEquals(rqlst.defined_vars['U']._q_invariant, False) |
236 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
236 self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) |
237 |
237 |
238 def test_not_exists_2(self): |
238 def test_not_exists_2(self): |
239 rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') |
239 rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') |
240 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
240 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
241 |
241 |
242 def test_not_exists_distinct_1(self): |
242 def test_not_exists_distinct_1(self): |
243 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') |
243 rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') |
244 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
244 self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) |
245 |
245 |
246 def test_or_1(self): |
246 def test_or_1(self): |
247 rqlst = self._prepare('Any X WHERE X concerne B OR C concerne X, B eid 12, C eid 13') |
247 rqlst = self._prepare('Any X WHERE X concerne B OR C concerne X, B eid 12, C eid 13') |
248 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |
248 self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) |