@@ -699,6 +699,19 @@ def create_generators(cls):
699
699
return isinstance(py_obj, numbers.Number)""" ,
700
700
placeHolder = '0' ))
701
701
702
+ module .addItem (MappedTypeDef_cffi (
703
+ name = 'BrokenMappedType' , cType = 'int' ,
704
+ py2c = "raise TypeError('Message')" ,
705
+ c2py = "" ,
706
+ c2cpp = "return new BrokenMappedType();" ,
707
+ cpp2c = "return 0;" ,
708
+ instanceCheck = "return True" ,
709
+ placeHolder = '0' ))
710
+
711
+ module .addItem (FunctionDef (
712
+ type = 'void' , name = 'take_broken_mapped_type' ,
713
+ items = ArgsString ('(BrokenMappedType b)' )))
714
+
702
715
module .addItem (FunctionDef (
703
716
type = 'int' , argsString = '(string *str)' , name = 'std_string_len' ,
704
717
items = [ParamDef (name = 'str' , type = 'string *' )],
@@ -1132,7 +1145,7 @@ def test_pure_virtual_method_private_overriding(self):
1132
1145
assert o .pvmeth (20 ) == 10
1133
1146
1134
1147
assert o .call_pvmeth () == 16
1135
- with pytest .raises (TypeError ):
1148
+ with pytest .raises (NotImplementedError ):
1136
1149
o .pvmeth ()
1137
1150
1138
1151
def test_subclass_virtual_method_direct_call (self ):
@@ -2041,3 +2054,12 @@ def test_docstrings(self):
2041
2054
2042
2055
def test_typedefs (self ):
2043
2056
obj = self .mod .CtorsAlias (10 )
2057
+
2058
+ def test_conversion_failure (self ):
2059
+ try :
2060
+ self .mod .take_broken_mapped_type (object ())
2061
+ except TypeError as e :
2062
+ assert e .message == 'Message'
2063
+ else :
2064
+ # No exception raised
2065
+ assert False
0 commit comments