Beispiel #1
0
    def _itTestTree(self):
        root = Node()
        root.internal_type = 'root'
        son1 = Node()
        son1.internal_type = 'son1'

        son1_1 = Node()
        son1_1.internal_type = 'son1_1'

        son1_2 = Node()
        son1_2.internal_type = 'son1_2'
        son1.children.extend([son1_1, son1_2])

        son2 = Node()
        son2.internal_type = 'son2'
        son2_1 = Node()
        son2_1.internal_type = 'son2_1'

        son2_2 = Node()
        son2_2.internal_type = 'son2_2'
        son2.children.extend([son2_1, son2_2])

        root.children.extend([son1, son2])

        return root
Beispiel #2
0
    def _itTestTree(self):
        root = Node()
        root.internal_type = 'root'
        root.start_position.offset = 0
        root.start_position.line = 0
        root.start_position.col = 1

        son1 = Node()
        son1.internal_type = 'son1'
        son1.start_position.offset = 1

        son1_1 = Node()
        son1_1.internal_type = 'son1_1'
        son1_1.start_position.offset = 10

        son1_2 = Node()
        son1_2.internal_type = 'son1_2'
        son1_2.start_position.offset = 10

        son1.children.extend([son1_1, son1_2])

        son2 = Node()
        son2.internal_type = 'son2'
        son2.start_position.offset = 100

        son2_1 = Node()
        son2_1.internal_type = 'son2_1'
        son2_1.start_position.offset = 5

        son2_2 = Node()
        son2_2.internal_type = 'son2_2'
        son2_2.start_position.offset = 15

        son2.children.extend([son2_1, son2_2])
        root.children.extend([son1, son2])

        return root
Beispiel #3
0
def test_extract_subtrees_all_positions():
    root = Node()
    root.internal_type = 'root'
    root.start_position.line = 1
    root.end_position.line = 4

    child1 = Node()
    child1.internal_type = '1'
    child1.start_position.line = 1
    child1.end_position.line = 1

    child2 = Node()
    child2.internal_type = '2'
    child2.start_position.line = 2
    child2.end_position.line = 3
    child2a = Node()
    child2a.internal_type = '2a'
    child2a.start_position.line = 2
    child2a.end_position.line = 2
    child2b = Node()
    child2b.internal_type = '2b'
    child2b.start_position.line = 3
    child2b.end_position.line = 3

    child3 = Node()
    child3.internal_type = '3'
    child3.start_position.line = 4
    child3.end_position.line = 4

    child2.children.extend([child2a, child2b])
    root.children.extend([child1, child2, child3])

    paths = [p for p in extract_paths(root, lines=set([1]))]
    assert 4 == len(paths)

    subtrees = [
        s for s in extract_subtrees(root,
                                    min_depth=1,
                                    max_depth=1,
                                    min_size=1,
                                    max_size=100,
                                    lines=set([3]))
    ]
    assert [child2b] == subtrees

    subtrees = [
        s for s in extract_subtrees(root,
                                    min_depth=1,
                                    max_depth=1,
                                    min_size=1,
                                    max_size=100,
                                    lines=set([4]))
    ]
    assert [child3] == subtrees

    subtrees = [
        s for s in extract_subtrees(root,
                                    min_depth=1,
                                    max_depth=2,
                                    min_size=1,
                                    max_size=100,
                                    lines=set([3]))
    ]
    assert 2 == len(subtrees)
    assert child2b in subtrees
    assert child2 in subtrees

    subtrees = [
        s for s in extract_subtrees(root,
                                    min_depth=1,
                                    max_depth=100,
                                    min_size=1,
                                    max_size=3,
                                    lines=set([3]))
    ]
    assert 2 == len(subtrees)
    assert child2b in subtrees
    assert child2 in subtrees

    subtrees = [
        s for s in extract_subtrees(root,
                                    min_depth=1,
                                    max_depth=100,
                                    min_size=1,
                                    max_size=2,
                                    lines=set([3]))
    ]
    assert 1 == len(subtrees)
    assert child2b in subtrees

    deeper_root1 = Node()
    deeper_root2 = Node()
    deeper_root3 = Node()
    deeper_root3.children.extend([root])
    deeper_root2.children.extend([deeper_root3])
    deeper_root1.children.extend([deeper_root2])
    subtrees = [
        s for s in extract_subtrees(deeper_root1,
                                    min_depth=1,
                                    max_depth=2,
                                    min_size=1,
                                    max_size=100,
                                    lines=set([3]))
    ]
    assert 2 == len(subtrees)
    assert child2b in subtrees
    assert child2 in subtrees
Beispiel #4
0
 def testFilterInternalType(self):
     node = Node()
     node.internal_type = 'a'
     self.assertTrue(any(filter(node, "//a")))
     self.assertFalse(any(filter(node, "//b")))
Beispiel #5
0
 def testFilterString(self):
     node = Node()
     node.internal_type = "test"
     self.assertEqual(filter_string(node, "name(//*[1])"), "test")