Пример #1
0
 def testBastardQueries(self):
     self._test('andhausen %(or)s oriole',
         OrNode((WordNode('andhausen'), WordNode('oriole'))))
     self._test('and %(or)s or',
         OrNode((WordNode('and'), WordNode('or'))))
     self._test('("here")',
         PhraseNode((WordNode('here'), )))
Пример #2
0
 def testNear(self):
     self._test('foo %(near)s bar',   
         NearNode((WordNode("foo"),WordNode("bar"))))
     self._test('foo %(NEAR)s bar', 
         NearNode((WordNode("foo"),WordNode("bar"))))
     self._test('somefield::near(a b c)',
         NearNode((WordNode("a"),WordNode("b"),WordNode("c")), 'somefield'))
Пример #3
0
 def _parse(self, query):
     words = [w.strip() for w in query.split(' ')]
     return tuple([WordNode(w) for w in words if w])
Пример #4
0
 def testOR(self):
     self._test('foo %(or)s bar', 
         OrNode((WordNode("foo"),WordNode("bar"))))
     self._test('foo %(OR)s bar', 
         OrNode((WordNode("foo"),WordNode("bar"))))
     self._test('foo %(or)s  bar %(OR)s sux', 
         OrNode((WordNode("foo"),OrNode((WordNode("bar"),WordNode("sux"))))))
     self._test('somefield::%(or)s(a b c)',
         OrNode((WordNode("a"),WordNode('b'), WordNode('c')), 'somefield'))
     self._test('somefield::%(or)s(a b c)',
         OrNode((WordNode("a"),WordNode('b'), WordNode('c')), 'somefield'))
     self._test('some_field1::%(or)s(a *b c*)',
         OrNode((WordNode("a"), LTruncNode('b'), TruncNode('c')), 'some_field1'))
     self._test('default::%(or)s(a b c)',
         OrNode((WordNode("a"),WordNode('b'), WordNode('c'))))
Пример #5
0
 def testAnd(self):
     self._test(u'foo %(and)s bar', 
         AndNode((WordNode(u"foo"),WordNode(u"bar"))) )
     self._test(u'foo %(and)s bar', 
         AndNode((WordNode(u"foo"),WordNode(u"bar"))))
     self._test(u'foo %(and)s bar %(and)s sux', 
         AndNode(((WordNode(u"foo"),AndNode((WordNode(u"bar"),WordNode(u"sux")))))))
     self._test(u'C++ %(and)s Algol68' , 
         AndNode((WordNode(u'C++'),WordNode(u"Algol68"))))
     self._test('somefield::%(and)s(a b c)',
         AndNode((WordNode("a"),WordNode('b'), WordNode('c')), 'somefield'))
     self._test('somefield::%(and)s(a *b c*)',
         AndNode((WordNode("a"),LTruncNode('b'), TruncNode('c')), 'somefield'))
Пример #6
0
 def testWithSeparators(self):
     self._test(u'a' ,   WordNode(u'a'))
     self._test(u'1' ,   WordNode(u'1'))
     self._test(u'foo' , WordNode(u'foo'))
     self._test(u'C++' , WordNode(u'C++'))
Пример #7
0
 def testSimple(self):
     self._test(u'a' ,   WordNode(u'a'))
     self._test(u'1' ,   WordNode(u'1'))
     self._test(u'foo' , WordNode(u'foo'))
     self._test(u'123' , WordNode(u'123'))
Пример #8
0
 def testAnd(self):
     self._test('a b c', AndNode((WordNode("a"),WordNode("b"), WordNode('c'))))
     self._test('a foo', AndNode((WordNode("a"),WordNode("foo"))))
     self._test('', None)
Пример #9
0
 def testStupidPlone(self):
     self._test('"("foo")"', WordNode('foo'))
Пример #10
0
 def testFieldsSimple(self):
     self._test('somefield::foo', WordNode('foo', 'somefield'))
     self.assertRaises(QueryParserError, self._test, 'somefield : foo', WordNode('somefield', 'foo'))
Пример #11
0
 def testNot(self):
     self._test('%(NOT)s  bar',
         NotNode(WordNode('bar')))
     self._test('%(NOT)s - bar',
         NotNode(NotNode(WordNode('bar'))))
     self._test('language-code',
         WordNode('language-code'))
     self._test('- bar',
         NotNode(WordNode('bar')))
     self._test('foo %(and)s %(not)s bar',
         AndNode((WordNode('foo'),NotNode(WordNode('bar')))))
     self._test('foo %(and)s -bar',
         AndNode((WordNode('foo'),NotNode(WordNode('bar')))))
     self._test('not (a and b)',
         NotNode(AndNode((WordNode('a'), WordNode('b')))))
     self._test('not a and b',
         AndNode((NotNode(WordNode('a')), WordNode('b'))))
     self._test('-a and b',
         AndNode((NotNode(WordNode('a')), WordNode('b'))))
Пример #12
0
 def testPhrase(self):
     self._test('"foo"', 
         PhraseNode((WordNode("foo"),)))
     self._test('"foo bar"', 
         PhraseNode((WordNode("foo"),WordNode("bar"))))
     self._test('"foo bar sucks"' , 
         PhraseNode((WordNode("foo"),WordNode("bar"),WordNode("sucks"))))
     self._test('"bar %(or)s foo"' , 
         PhraseNode((WordNode("bar"),WordNode('%(or)s' % self.d),WordNode("foo"))))
     self._test('"bar %(near)s foo"' , 
         PhraseNode((WordNode("bar"),WordNode('%(near)s' % self.d),WordNode("foo"))))
     self._test('"bar %(not)s foo"' , 
         PhraseNode((WordNode("bar"),WordNode('%(not)s' % self.d),WordNode("foo"))))
     self._test('"bar %(and)s %(not)s foo"' , 
         PhraseNode((WordNode("bar"),WordNode('%(and)s' % self.d), WordNode('%(not)s' % self.d),WordNode("foo"))))
     self._test('somefield::PHRASE(foo bar sucks)' , 
         PhraseNode((WordNode("foo"),WordNode("bar"),WordNode("sucks")), 'somefield'))
     self._test('somefield::phrase( foo bar sucks)' , 
         PhraseNode((WordNode("foo"),WordNode("bar"),WordNode("sucks")), 'somefield'))