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))
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)])
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'])
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'])
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'])
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'})
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]")