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_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_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_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_lt_or_eq_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.LessThanOrEqualExpr(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_match_argument_types(self):
     a = ast.ForbidConvention(ast.Node(descriptor=ast.NodeTypeDescriptor(type_='property'),
                                       constraint=ast.MatchExpr(ast.IntegerExpr(4),
                                                                ast.StringExpr('t'), '')), '')
     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
 def visitList_element(self, ctx):
     if ctx.element_dec:
         return ast.DecimalExpr(float(ctx.element_dec.text))
     if ctx.element_int:
         return ast.IntegerExpr(int(ctx.element_int.text))
     if ctx.element_str:
         return ast.StringExpr(self.unescape_quotes(ctx.element_str.text))
     if ctx.element_desc:
         return self.visitSemantic_node(ctx.element_desc)
     raise ValueError('Unknown list element')
 def visitElement(self, context):
     if context.primary_bool:
         return ast.BooleanExpr(bool(context.primary_bool.text.lower() != 'false'), context.primary_bool.line)
     if context.primary_dec:
         return ast.DecimalExpr(float(context.primary_dec.text), context.primary_dec.line)
     if context.primary_int:
         return ast.IntegerExpr(int(context.primary_int.text), context.primary_int.line)
     if context.primary_str:
         return ast.StringExpr(self.unescape_quotes(context.primary_str.text), context.primary_str.line)
     if context.primary_list:
         return self.visitList_(context.primary_list)
     raise ValueError('Unknown element')
 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