示例#1
0
 def test_given_different_children_then_not_equal(self) -> None:
     from cmaj.testing.ast import tree
     node = tree(('node', [('child1', Token(0, 0, 'value')),
                           ('child2', Token(1, 0, 'value'))]))
     other = tree(('node', [('child1', Token(0, 0, 'value')),
                            ('child2', Token(1, 0, 'other'))]))
     self.assertNotEqual(other, node)
示例#2
0
 def test_given_tree_then_correct_prune(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('X', [('X', [token('Y', 0), ('X', [token('Y', 1), token('Y', 2)])]),
                        ('Y', [('X', [token('X', 3)])])]))
     result = prune(node, 'Y')
     expected = tree(('X', []))
     self.assertEqual(expected, result)
示例#3
0
 def test_given_equal_nodes_then_equal(self) -> None:
     from cmaj.testing.ast import tree
     tree_def = ('node', [('child1', Token(0, 0, 'this')),
                          ('child2', Token(0, 5, 'is')),
                          ('child3', Token(2, 4, 'awesome'))])
     node = tree(tree_def)
     other = tree(tree_def)
     self.assertEqual(other, node)
示例#4
0
 def test_given_multiple_lines_then_length_of_last_line(self) -> None:
     from cmaj.testing.ast import tree
     node = tree(('node', [('child1', Token(3, 0, 'wrong length')),
                           ('child2', Token(5, 2, 'correct'))]))
     self.assertEqual(7, len(node))
示例#5
0
 def test_given_children_then_length_of_column_span(self) -> None:
     from cmaj.testing.ast import tree
     node = tree(('node', [('child1', Token(3, 2, 'value')),
                           ('child2', Token(3, 9, 'other'))]))
     self.assertEqual(12, len(node))
示例#6
0
 def test_given_single_child_then_child_becomes_root(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('X', [token('X', 0)]))
     result = skip(node, 'X')
     expected = tree(token('X', 0))
     self.assertEqual(expected, result)
示例#7
0
 def test_given_root_is_leaf_then_not_skipped(self) -> None:
     from cmaj.testing.ast import tree
     tree_def = ('node', [])
     result = skip(tree(tree_def), 'node')
     self.assertEqual(tree(tree_def), result)
示例#8
0
 def test_when_all_children_are_pruned_then_prune_empty_nodes(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('X', [token('Y', 0), ('Y', [token('X', 1), token('X', 2)])]))
     result = prune(node, 'X')
     expected = tree(('X', [token('Y', 0)]))
     self.assertEqual(expected, result)
示例#9
0
 def test_given_nodes_to_squash_separated_by_other_node_then_no_squash(self) -> None:
     from cmaj.testing.ast import tree, token
     tree_def = ('X', [('Y', [token('X', 0)])])
     result = squash(tree(tree_def), 'X')
     self.assertEqual(tree(tree_def), result)
示例#10
0
 def test_given_root_with_leaf_to_prune_then_root_becomes_leaf(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('X', [token('X', 0)]))
     result = prune(node, 'X')
     expected = tree(('X', []))
     self.assertEqual(expected, result)
示例#11
0
 def test_given_chain_then_squash_to_single_node(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('Y', [('X', [('X', [('X', [token('Y', 0)])])])]))
     result = squash(node, 'X')
     expected = tree(('Y', [('X', [token('Y', 0)])]))
     self.assertEqual(expected, result)
示例#12
0
 def test_given_inner_node_to_squash_then_grandchildren_become_children(self) -> None:
     from cmaj.testing.ast import tree, token
     node = tree(('Y', [('X', [('X', [token('Y', 0), token('Y', 1)])])]))
     result = squash(node, 'X')
     expected = tree(('Y', [('X', [token('Y', 0), token('Y', 1)])]))
     self.assertEqual(expected, result)
示例#13
0
 def test_given_many_children_to_squash_when_parent_is_root_then_no_squash(self) -> None:
     from cmaj.testing.ast import tree, token
     tree_def = ('X', [token('X', 0), token('X', 1)])
     result = squash(tree(tree_def), 'X')
     self.assertEqual(tree(tree_def), result)
示例#14
0
 def test_given_inner_nodes_not_to_skip_then_not_skipped(self) -> None:
     from cmaj.testing.ast import tree, token
     tree_def = ('X', [('Y', [token('X', 0)])])
     result = skip(tree(tree_def), 'X')
     self.assertEqual(tree(tree_def), result)
示例#15
0
 def test_given_many_children_then_not_skipped(self) -> None:
     from cmaj.testing.ast import tree, token
     tree_def = ('X', [token('X', 0), token('X', 1)])
     result = skip(tree(tree_def), 'X')
     self.assertEqual(tree(tree_def), result)