def test_valid_contains_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.ContainsExpr(ast.VariableExpr.DEFAULT,
                                                                   ast.Node(ast.NodeTypeDescriptor(type_='a')))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def visitSemantic_node(self, context):
     node_descriptor = self.get_node_descriptor(context.type_)
     line = context.type_.start.line
     if not context.constraint:
         return ast.Node(node_descriptor, line)
     constraint = self.visitLogic_expr(context.constraint)
     return ast.Node(node_descriptor, line, constraint)
 def visit_semantic_node_with_id(self, context, variable):
     node_descriptor = self.get_node_descriptor(context.type_)
     line = context.type_.start.line
     if not context.constraint:
         return ast.Node(node_descriptor, line, identifier=variable)
     constraint = self.visitLogic_expr(context.constraint)
     return ast.Node(node_descriptor, line, identifier=variable, constraint=constraint)
 def test_undefined_variable_in_method_expr(self):
     a = ast.FindRequireConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'), identifier='a'), '',
                                   constraint=ast.MethodExpr(ast.VariableExpr('b'), 'child', ast.IntegerExpr(5)))
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_diff_ineq_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.NotEqualExpr(ast.StringExpr('t'), ast.IntegerExpr(5), 3)), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors_for_convention(a)) == 1
 def test_same_eq_argument_types_list(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.EqualExpr(ast.ListExpr([]),
                                                                ast.ListExpr([]), 3)), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def test_same_gr_eq_argument_types_integer(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.GreaterThanOrEqualExpr(ast.IntegerExpr(2),
                                                                             ast.IntegerExpr(2), 3)), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def test_valid_minus_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.EqualExpr(ast.UnaryMinusExpr(ast.IntegerExpr(1)),
                                                                ast.IntegerExpr(2))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def test_invalid_minus_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.UnaryMinusExpr(ast.StringExpr(''))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_valid_or_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.OrExpr(ast.BooleanExpr(True),
                                                             ast.BooleanExpr(False))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def test_valid_match_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.MatchExpr(ast.StringExpr('t'),
                                                                ast.StringExpr('m'))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert not error_log.contain_errors()
 def visitWhitespace_node(self, context):
     node_descriptor = self.get_ws_node_descriptor(context.type_.text)
     line = context.type_.line
     if context.quantifier:
         repeater = self.visitRepeater(context.quantifier)
         return ast.WhitespaceNode(node_descriptor, repeater, line)
     return ast.Node(node_descriptor, line)
 def test_undefined_variable_in_node_query(self):
     a = ast.FindRequireConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'), identifier='a'), '',
                                   constraint=ast.NextSiblingExpr(ast.VariableExpr('b')))
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_invalid_boolean_constraint(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.IntegerExpr(1)), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_list_with_diff_elements(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.EqualExpr(ast.ListExpr([ast.IntegerExpr(1), ast.StringExpr('')]),
                                                                ast.IntegerExpr(2))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_invalid_lt_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.LessThanExpr(ast.NodeTypeExpr('t'),
                                                                   ast.IntegerExpr(5), 3)), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
 def test_invalid_contains_all_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.ContainsAllExpr(
                                           ast.VariableExpr.DEFAULT,
                                           ast.ListExpr([ast.IntegerExpr(2)]))), '')
     convention_set = self.wrap_convention_in_set(a)
     error_log = checker.TypeChecker.check(convention_set)
     assert error_log.contain_errors()
     assert len(error_log.get_errors()) == 1
Exemplo n.º 18
0
 def _get_sequence(node_type):
     return ast.SequencePattern(
         [ast.Node(ast.NodeTypeDescriptor.build_type(type_=node_type))])
Exemplo n.º 19
0
 def build_node_desc(type_):
     return ast.Node(ast.NodeTypeDescriptor(type_=type_))