def test_handle_min_more(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(lower=2))
     is_matched, rem_nodes = self.matcher._handle_range(desc, [self.node0, self.node1, self.node3])
     assert is_matched
     assert not rem_nodes
 def test_handle_max_more(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(upper=3))
     is_matched, rem_nodes = self.matcher._handle_range(desc, [self.node0, self.node1, self.node2, self.node3])
     assert is_matched
     assert len(rem_nodes) == 1
     assert rem_nodes[0] == self.node3
 def test_handle_max_exact(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(upper=3))
     is_matched, rem_nodes = self.matcher._handle_range(desc, [self.node0, self.node1, self.node2])
     assert is_matched
     assert not rem_nodes
 def test_handle_range_less(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(1, 2))
     is_matched, rem_nodes = self.matcher._handle_range(desc, [])
     assert not is_matched
 def test_not_is_lower_matched(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(lower=2, upper=2))
     is_matched, rem_nodes = self.matcher._is_lower_matched(desc, [self.node0])
     assert not is_matched
 def test_is_lower_matched(self):
     desc = PatternConstructor.build_seq_desc(ast.Repeater(lower=2, upper=2))
     is_matched, rem_nodes = self.matcher._is_lower_matched(desc, [self.node0, self.node1, self.node2])
     assert is_matched
     assert len(rem_nodes) == 1
     assert rem_nodes[0] == self.node2