예제 #1
0
 def setUp(self):
     self.p = Parser()
예제 #2
0
class TestBase(unittest.TestCase):


    def setUp(self):
        self.p = Parser()

    def testInterface(self):
        verifyClass(ParserInterface, Parser)

    
    def parse(self, q):
        return self.p.parse(q,'')

    def testSimple(self):

        self._test('a' ,   WordNode('a'))
        self._test('1' ,   WordNode('1'))
        self._test('foo' , WordNode('foo'))
        self._test('123' , WordNode('123'))

    def testWithSeparators(self):

        self._test('a' ,   WordNode('a'))
        self._test('1' ,   WordNode('1'))
        self._test('foo' , WordNode('foo'))
        self._test('C++' , WordNode('C++'))

    def testGlobbing(self):

        self._test('foo*',   TruncNode("foo"))
        self._test('%foo',   SimNode("foo"))
        self._test('fo?o*',  GlobNode("fo?o*"))
        self._test('?fo?o*', GlobNode("?fo?o*"))


    def testAnd(self):

        self._test('foo und bar', 
            AndNode((WordNode("foo"),WordNode("bar"))) )
        self._test('foo UND bar', 
            AndNode((WordNode("foo"),WordNode("bar"))))
        self._test('foo und bar und sux', 
            AndNode(((WordNode("foo"),AndNode((WordNode("bar"),WordNode("sux")))))))
        self._test('C++ und Algol68' , 
            AndNode((WordNode('C++'),WordNode("Algol68"))))

        
    def testOR(self):
        self._test('foo oder bar', 
            OrNode((WordNode("foo"),WordNode("bar"))))
        self._test('foo ODER bar', 
            OrNode((WordNode("foo"),WordNode("bar"))))
        self._test('foo oder bar ODER sux', 
            OrNode((WordNode("foo"),OrNode((WordNode("bar"),WordNode("sux"))))))


    def testNear(self):

        self._test('foo nahe bar',   
            NearNode((WordNode("foo"),WordNode("bar"))))
        self._test('foo NAHE bar', 
            NearNode((WordNode("foo"),WordNode("bar"))))


    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"))))


    def testNot(self):

        self._test('NICHT  bar',
            NotNode(WordNode('bar')))
        self._test('nicht - bar',
            NotNode(NotNode(WordNode('bar'))))
        self._test('- bar',
            NotNode(WordNode('bar')))
        self._test('foo und nicht bar',
            AndNode((WordNode('foo'),NotNode(WordNode('bar')))))
        self._test('foo und -bar',
            AndNode((WordNode('foo'),NotNode(WordNode('bar')))))


    def testBastardQueries(self):
        
        self._test('andhausen oder oriole',
            OrNode((WordNode('andhausen'), WordNode('oriole'))))
        self._test('and oder or ',
            OrNode((WordNode('and'), WordNode('or'))))