Exemplo n.º 1
0
    def test_parse_with_new_default(self):
        testcase = {
            'helo again bye':{'sq':str(SQ(content='helo')|SQ(content='again')|SQ(content='bye')),
                              'operator':'OR'},
            'helo again AND bye':{
                'sq':str((SQ(content='helo')|SQ(content='again'))&SQ(content='bye')),
                'operator':'OR'},
            'helo again AND bye run':{
                'sq':str(((SQ(content='helo')|SQ(content='again'))&
                          SQ(content='bye'))|SQ(content='run')),
                'operator':'OR'},

        }
        for case in testcase.keys():
            parser = ParseSQ(testcase[case]['operator'])
            self.assertEqual(str(parser.parse(case,)),testcase[case]['sq'])
Exemplo n.º 2
0
    def test_parse(self):
        testcase = {
            "note":str(SQ(content="note")),
            '"need note"':str(SQ(content__exact="need note")),
            "author:admin":str(SQ(author="admin")),
            "author:admin notes":str(SQ(author="admin")&SQ(content="notes")),
            "author:admin OR notes":str(SQ(author="admin")|SQ(content="notes")),
            'title:"need note"':str(SQ(title__exact="need note")),
            # "need note 您好测试这":str(SQ(content="need")&SQ(content="note")&SQ(content=u"您")&SQ(content=u"好")&SQ(content=u"测")&SQ(content=u"试")&SQ(content=u"这")),
            "need note NOT used":str(SQ(content="need")&SQ(content="note")
                                     & ~SQ(content="used")),
            "(a AND b) OR (c AND d)":str((SQ(content="a")&SQ(content="b"))|
                                         (SQ(content="c")&SQ(content="d"))),
            "a AND b OR (c AND d)":str(SQ(content="a")&SQ(content="b")|
                                       (SQ(content="c")&SQ(content="d"))),
            '"a AND b" OR "(c AND d)"':str(SQ(content__exact="a AND b")|
                                           SQ(content__exact="(c AND d)")),
            '"notes done" OR papaya':str(SQ(content__exact="notes done")|
                                         SQ(content="papaya")),
            '"a AND b" OR (c AND d)':str(SQ(content__exact="a AND b")|
                                         (SQ(content="c")&SQ(content="d"))),
            'labels:"exp>20"':str(SQ(labels__exact="exp>20")),
            'labels:"HP employee"':str(SQ(labels__exact="HP employee")),
            'labels:"HP employee" OR something':str(SQ(labels__exact="HP employee")|
                                                             SQ(content='something')),

        }
        parser = ParseSQ()
        
        for case in testcase.keys():
            self.assertEqual(str(parser.parse(case)),testcase[case])
Exemplo n.º 3
0
 def test_operators(self):
     testcase = {
         "note":str(SQ(content="note")),
         "need -note":str(SQ(content="need")&~SQ(content="note")),
         "need +note":str(SQ(content="need")&SQ(content="note")),
         "need+note":str(SQ(content="need+note")),
     }
     parser = ParseSQ()
     
     for case in testcase.keys():
         self.assertEqual(str(parser.parse(case)),testcase[case])