def test_simple(self):
        ps = ParseFacts()
        ps.parseLine("extend(\"compressed @@@\")")

        rl = RuleEngine()
        rl.initFactsDict(ps)

        clog1 = CompressedLog("compressed @@@")
        clog1.setDiffWordsSet({1})

        clog2 = CompressedLog("compressed2 @@@")
        clog2.setDiffWordsSet({1})

        rawlog1 = RawLog(date=datetime.datetime.now(),log="compressed a")
        rawlog2 = RawLog(date=datetime.datetime.now(),log="compressed b")
        rawlog3 = RawLog(date=datetime.datetime.now(),log="compressed2 a")
        rawlog4 = RawLog(date=datetime.datetime.now(),log="compressed2 b")

        clog1.rawlogs.append(rawlog1)
        clog1.rawlogs.append(rawlog2)

        clog2.rawlogs.append(rawlog3)
        clog2.rawlogs.append(rawlog4)

        [date1,logmessage1] = rl.filterLog(rawlog1)
        [date2,logmessage2] = rl.filterLog(rawlog2)
        [date3,logmessage3] = rl.filterLog(rawlog3)
        [date4,logmessage4] = rl.filterLog(rawlog4)

        self.assertEqual("compressed a",logmessage1)
        self.assertEqual("compressed b",logmessage2)
        self.assertEqual("compressed2 @@@",logmessage3)
        self.assertEqual("compressed2 @@@",logmessage4)
 def test_parsing_simple(self):
     pf = ParseFacts()
     pf.parseLine("extend(\"lol kind of shit\", \"arg nr 1\", \"arg nr 2\")")
     fact = pf.knowledgelist[0]
     self.assertEqual(fact.factname,"extend")
     self.assertEqual(fact.arglist[0],"lol kind of shit")
     self.assertEqual(fact.arglist[1],"arg nr 1")
     self.assertEqual(fact.arglist[2],"arg nr 2")
    def test_regexp(self):
        ps = ParseFacts()
        ps.parseLine("default(\"remove\")")
        ps.parseLine("clogregexp(\" Start proc.*\")")

        rl = RuleEngine()
        rl.initFactsDict(ps)

        clog_false_str = " End pro @@@ @@@"
        clog_true_str = " Start proc @@@ @@@"

        rawlog_false = self.create_log_and_clog(" End pro blabla bla", clog_false_str,[3,4])
        rawlog_true = self.create_log_and_clog(" Start proc blabla bla",  clog_true_str,[3,4])

        none_result = rl.filterLog(rawlog_false)
        [date2,logmessage_true] = rl.filterLog(rawlog_true)

        self.assertEqual(None,none_result)
        self.assertEqual(logmessage_true,logmessage_true)
 def test_QmarkInedxes(self):
     ps = ParseFacts()
     indexes = ps.findWithOutSpecialQuestionMarks("\"arg1\",\"arg2 this is\\\"not funny\\\"\"")
     self.assertEqual(indexes,[0,5,7,33])