Beispiel #1
0
    def test_xugrep(self):
        # a result_forest is a list of text pieces
        report = {}
        report['result_forest'] = [ self.tei_data1 ]
        report['tree_ids'] = ["AIST"]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []
        xugrep = XUGrep()

        report = xugrep.xugrep( self.tei_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "AIST.1" )
        self.assertEqual( report['tree_ids'][1], "AIST.9" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "tei:section" )
        self.assertEqual( len( report['tree_types'] ), 2 )

        report = {}
        report['result_forest'] = [ self.tei_data2 ]
        report['tree_ids'] = [ "AIST" ]
        report['tree_types'] = [ "file" ]

        report = xugrep.xugrep( self.tei_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "AIST.1.1.1" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "tei:section")
        self.assertEqual( report['tree_types'][2], "tei:subsection")
        self.assertEqual( report['tree_types'][3], "tei:subsubsection")
        self.assertEqual( len( report['tree_types'] ), 4 )
        self.assertEqual( len(report['re_matches'][0]), 1 )
        self.assertEqual( len(report['re_matches']), 1 )

        ## NVD
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = [ "CVE2012" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.nvd_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001" )
        self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "nvd:entry" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len( report['re_matches'][0] ), 1 )
        self.assertEqual( len( report['re_matches'][1] ), 1 )
        self.assertEqual( len( report['re_matches'] ), 2 )
        
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = [ "CVE2012" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.nvd_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001.1" )
        self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002.1" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "nvd:entry" )
        self.assertEqual( report['tree_types'][2], "nvd:score" )
        self.assertEqual( len( report['tree_types'] ), 3 )
        # undefined:  self.assertEqual( len( report['re_matches'] ), 

        ## Cisco IOS
        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Router.Loopback0" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len( report['re_matches'] ), 0 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len(report['re_matches'][0]), 2 )
        self.assertEqual( len(report['re_matches']), 1 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath3, report )
        self.assertEqual( len( report['result_forest'] ), 9 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.1" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.2" )
        self.assertEqual( len( report['tree_ids'] ), 9 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( report['tree_types'][2], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 3 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath4, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.4" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.5" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( report['tree_types'][2], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 3 )
        self.assertEqual( len( report['re_matches'][0] ), 1 )
        self.assertEqual( len( report['re_matches'][1] ), 1 )
        self.assertEqual( len( report['re_matches'] ), 2 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath5, report )
        self.assertEqual( len( report['result_forest'] ), 16 )
        self.assertEqual( report['tree_ids'][0], "Router.1" )
        self.assertEqual( report['tree_ids'][1], "Router.2" )
        self.assertEqual( len( report['tree_ids'] ), 16 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        
        ## C Functions
        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = [ "Example" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.c_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 5 )
        self.assertEqual( report['tree_ids'][0], "Example.putstr" )
        self.assertEqual( report['tree_ids'][1], "Example.fac" )
        self.assertEqual( report['tree_ids'][2], "Example.putn" )
        self.assertEqual( len( report['tree_ids'] ), 5 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "cspec:function" )
        self.assertEqual( len( report['tree_types'] ), 2 )

        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = [ "Example" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.c_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Example.putstr" )
        self.assertEqual( report['tree_ids'][1], "Example.putn" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "cspec:function" )
        self.assertEqual( len( report['tree_types'] ), 2 )