1
1
use opaque_pointer;
2
2
3
+ #[ derive( Debug ) ]
3
4
struct TestIt {
4
5
value : u8 ,
5
6
}
@@ -23,6 +24,17 @@ fn own_back() {
23
24
assert_eq ! ( test_it. get( ) , 2 ) ;
24
25
}
25
26
27
+ #[ cfg( all( feature = "std" , feature = "lender" ) ) ]
28
+ #[ test]
29
+ fn own_back_invalid_pointer ( ) {
30
+ let pointer = Box :: into_raw ( Box :: new ( TestIt :: new ( 2 ) ) ) ;
31
+ let invalid_pointer_error = unsafe { opaque_pointer:: own_back ( pointer) . unwrap_err ( ) } ;
32
+ assert_eq ! (
33
+ invalid_pointer_error,
34
+ opaque_pointer:: error:: PointerError :: Invalid
35
+ ) ;
36
+ }
37
+
26
38
#[ test]
27
39
fn immutable_reference ( ) {
28
40
let pointer = opaque_pointer:: raw ( TestIt :: new ( 2 ) ) ;
@@ -31,6 +43,17 @@ fn immutable_reference() {
31
43
unsafe { opaque_pointer:: own_back ( pointer) . unwrap ( ) } ;
32
44
}
33
45
46
+ #[ cfg( all( feature = "std" , feature = "lender" ) ) ]
47
+ #[ test]
48
+ fn immutable_reference_invalid_pointer ( ) {
49
+ let pointer = Box :: into_raw ( Box :: new ( TestIt :: new ( 2 ) ) ) ;
50
+ let invalid_pointer_error = unsafe { opaque_pointer:: object ( pointer) . unwrap_err ( ) } ;
51
+ assert_eq ! (
52
+ invalid_pointer_error,
53
+ opaque_pointer:: error:: PointerError :: Invalid
54
+ ) ;
55
+ }
56
+
34
57
#[ test]
35
58
fn mutable_reference ( ) {
36
59
let pointer = opaque_pointer:: raw ( TestIt :: new ( 2 ) ) ;
@@ -39,3 +62,14 @@ fn mutable_reference() {
39
62
assert_eq ! ( object. get( ) , 5 ) ;
40
63
unsafe { opaque_pointer:: own_back ( pointer) . unwrap ( ) } ;
41
64
}
65
+
66
+ #[ cfg( all( feature = "std" , feature = "lender" ) ) ]
67
+ #[ test]
68
+ fn mutable_reference_invalid_pointer ( ) {
69
+ let pointer = Box :: into_raw ( Box :: new ( TestIt :: new ( 2 ) ) ) ;
70
+ let invalid_pointer_error = unsafe { opaque_pointer:: mut_object ( pointer) . unwrap_err ( ) } ;
71
+ assert_eq ! (
72
+ invalid_pointer_error,
73
+ opaque_pointer:: error:: PointerError :: Invalid
74
+ ) ;
75
+ }
0 commit comments