示例#1
0
 def testItersMixingIterations(self):
     root = self.client.parse(__file__).uast
     it = iterator(root, TreeOrder.PRE_ORDER)
     next(it); next(it); next(it)
     n = next(it)
     it2 = iterator(n, TreeOrder.PRE_ORDER)
     next(it2)
     assert(next(it) == next(it2))
示例#2
0
 def testIteratorPositionOrder(self) -> None:
     # Check first our homemade tree
     root = self._itTestTree()
     it = iterator(root, TreeOrder.POSITION_ORDER)
     self.assertIsNotNone(it)
     expanded = self._get_nodetypes(it)
     self.assertListEqual(expanded, ['root', 'son1', 'son2_1', 'son1_1',
                                     'son1_2', 'son2_2', 'son2'])
     # Check that when using the positional order the positions we get are
     # in fact sorted by (offset, line, col)
     it = iterator(root, TreeOrder.POSITION_ORDER)
     positions = self._get_positions(it)
     self.assertListEqual(positions, [(0,1,1), (2,2,2), (5,5,1), (10,10,1),
                                      (10,10,1), (15,15,1), (100,100,1)])
示例#3
0
 def testChildrenOrder(self) -> None:
     root = self._itTestTree()
     it = iterator(root, TreeOrder.CHILDREN_ORDER)
     self.assertIsNotNone(it)
     expanded = self._get_nodetypes(it)
     # We only can test that the order gives us all the nodes
     self.assertEqual(expanded, ['son1', 'son2'])
示例#4
0
 def testIteratorLevelOrder(self) -> None:
     root = self._itTestTree()
     it = iterator(root, TreeOrder.LEVEL_ORDER)
     self.assertIsNotNone(it)
     expanded = self._get_nodetypes(it)
     self.assertListEqual(expanded, ['root', 'son1', 'son2', 'son1_1',
                                     'son1_2', 'son2_1', 'son2_2'])
示例#5
0
 def testIteratorPositionOrder(self):
     root = self._itTestTree()
     it = iterator(root, TreeOrder.POSITION_ORDER)
     self.assertIsNotNone(it)
     expanded = [node.internal_type for node in it]
     self.assertListEqual(expanded, ['root', 'son1', 'son2_1', 'son1_1',
                                     'son1_2', 'son2_2', 'son2'])
示例#6
0
 def testAnyOrder(self) -> None:
     root = self._itTestTree()
     it = iterator(root, TreeOrder.ANY_ORDER)
     self.assertIsNotNone(it)
     expanded = self._get_nodetypes(it)
     # We only can test that the order gives us all the nodes
     self.assertEqual(set(expanded), {'root', 'son1', 'son2', 'son1_1',
                                      'son1_2', 'son2_1', 'son2_2'})
示例#7
0
 def testFilterInsideIter(self):
     root = self.client.parse(__file__).uast
     it = iterator(root, TreeOrder.PRE_ORDER)
     self.assertIsNotNone(it)
     for n in it:
         filter(n, "//*[@roleIdentifier]")