示例#1
0
 def testFilterProperties(self):
     node = Node()
     node.properties['k1'] = 'v1'
     node.properties['k2'] = 'v2'
     self.assertTrue(any(xpath_filter(node, "/*[@k1='v1']")))
     self.assertTrue(any(xpath_filter(node, "/*[@k2='v2']")))
     self.assertFalse(any(xpath_filter(node, "/*[@k1='v2']")))
示例#2
0
    def testManyParsesAndFilters(self):
        before = resource.getrusage(resource.RUSAGE_SELF)
        for _ in range(100):
            root = self.client.parse(self.fixtures_file).uast
            xpath_filter(root, "//*[@role='Identifier']")

        after = resource.getrusage(resource.RUSAGE_SELF)
        self.assertLess(after[2] / before[2], 4.0)
示例#3
0
 def testFilterEndCol(self):
     uast = self._parse_fixture().uast
     self.assertTrue(
         any(
             xpath_filter(uast,
                          "//uast:Positions/end/uast:Position[@col=49]")))
     self.assertFalse(
         any(
             xpath_filter(
                 uast, "//uast:Positions/end/uast:Position[@col=99999]")))
示例#4
0
 def testFilterEndLine(self):
     uast = self._parse_fixture().uast
     self.assertTrue(
         any(
             xpath_filter(uast,
                          "//uast:Positions/end/uast:Position[@line=321]")))
     self.assertFalse(
         any(
             xpath_filter(
                 uast, "//uast:Positions/end/uast:Position[@line=99999]")))
示例#5
0
 def testFilterStartLine(self):
     uast = self._parse_fixture().uast
     self.assertTrue(
         any(
             xpath_filter(uast,
                          "//uast:Positions/start/uast:Position[@col=42]")))
     self.assertFalse(
         any(
             xpath_filter(
                 uast, "//uast:Positions/start/uast:Position[@col=99999]")))
示例#6
0
 def testFilterStartOffset(self):
     uast = self._parse_fixture().uast
     self.assertTrue(
         any(
             xpath_filter(
                 uast,
                 "//uast:Positions/start/uast:Position[@offset=11749]")))
     self.assertFalse(
         any(
             xpath_filter(
                 uast,
                 "//uast:Positions/start/uast:Position[@offset=99999]")))
示例#7
0
    def testManyFilters(self):
        root = self._parse_fixture().uast
        root.properties['k1'] = 'v2'
        root.properties['k2'] = 'v1'

        before = resource.getrusage(resource.RUSAGE_SELF)
        for _ in range(1000):
            xpath_filter(root, "//*[@roleIdentifier]")

        after = resource.getrusage(resource.RUSAGE_SELF)

        # Check that memory usage has not doubled after running the filter
        self.assertLess(after[2] / before[2], 2.0)
示例#8
0
    def testFilterRoles(self):
        uast = self._parse_fixture().uast
        it = xpath_filter(uast, "//*[@role='Identifier']")
        self.assertIsInstance(it, CompatNodeIterator)
        li = list(it)
        self.assertGreater(len(li), 0)

        it = xpath_filter(uast, "//*[@role='Friend']")
        self.assertIsInstance(it, CompatNodeIterator)
        li = list(it)
        self.assertEqual(len(li), 0)

        it = xpath_filter(uast, "//*[@role='Identifier' and not(@role='Friend')]")
        self.assertIsInstance(it, CompatNodeIterator)
        li = list(it)
        self.assertGreater(len(li), 0)
示例#9
0
 def testFilterToken(self):
     uast = self._parse_fixture().uast
     it = xpath_filter(uast, "//*[@token='else']/text()")
     first = next(it).get_str()
     self.assertEqual(first, "else")
示例#10
0
 def testFilterInternalType(self):
     node = Node()
     node.internal_type = 'a'
     self.assertTrue(any(xpath_filter(node, "//a")))
     self.assertFalse(any(xpath_filter(node, "//b")))
示例#11
0
 def testBrokenFilter(self):
     with self.assertRaises(AttributeError):
         xpath_filter(0, "foo")
示例#12
0
 def testFilterInsideIter(self):
     root = self._parse_fixture().uast
     it = iterator(root, TreeOrder.PRE_ORDER)
     self.assertIsNotNone(it)
     for n in it:
         xpath_filter(n, "//*[@roleIdentifier]")