Skip to content

Commit 384f021

Browse files
committed
chore: Add tests to check invalid pointer error result
1 parent 254c46d commit 384f021

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::str::Utf8Error;
66
///
77
/// Of course, invalid address can not be detected, then it's unsafe yet.
88
#[allow(clippy::module_name_repetitions)] // Like std::error::Error, it is for pointer errors
9-
#[derive(Debug)]
9+
#[derive(Debug, PartialEq, Eq)]
1010
pub enum PointerError {
1111
#[allow(missing_docs)] // Obviously, the name is the ref doc.
1212
Null,

tests/pointer.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use opaque_pointer;
22

3+
#[derive(Debug)]
34
struct TestIt {
45
value: u8,
56
}
@@ -23,6 +24,17 @@ fn own_back() {
2324
assert_eq!(test_it.get(), 2);
2425
}
2526

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+
2638
#[test]
2739
fn immutable_reference() {
2840
let pointer = opaque_pointer::raw(TestIt::new(2));
@@ -31,6 +43,17 @@ fn immutable_reference() {
3143
unsafe { opaque_pointer::own_back(pointer).unwrap() };
3244
}
3345

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+
3457
#[test]
3558
fn mutable_reference() {
3659
let pointer = opaque_pointer::raw(TestIt::new(2));
@@ -39,3 +62,14 @@ fn mutable_reference() {
3962
assert_eq!(object.get(), 5);
4063
unsafe { opaque_pointer::own_back(pointer).unwrap() };
4164
}
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

Comments
 (0)