Skip to content

Commit 72cbd42

Browse files
committed
Add more tests
1 parent 70dc2d6 commit 72cbd42

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

tests/general.rs

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
use std::path::Path;
2+
3+
use shared_memory::ShmemConf;
4+
5+
#[test]
6+
fn create_new() {
7+
let mut s = ShmemConf::new().size(4090).create().unwrap();
8+
9+
assert!(s.is_owner());
10+
assert!(!s.get_os_id().is_empty());
11+
assert!(s.len() >= 4090);
12+
assert!(!s.as_ptr().is_null());
13+
unsafe {
14+
assert_eq!(s.as_slice().len(), s.len());
15+
assert_eq!(s.as_slice_mut().len(), s.len());
16+
}
17+
}
18+
19+
#[test]
20+
fn create_with_flink() {
21+
let flink = Path::new("create_new1");
22+
23+
let mut s = ShmemConf::new().flink(flink).size(4090).create().unwrap();
24+
25+
assert!(s.is_owner());
26+
assert!(!s.get_os_id().is_empty());
27+
assert!(flink.is_file());
28+
assert!(s.len() >= 4090);
29+
assert!(!s.as_ptr().is_null());
30+
unsafe {
31+
assert_eq!(s.as_slice().len(), s.len());
32+
assert_eq!(s.as_slice_mut().len(), s.len());
33+
}
34+
35+
drop(s);
36+
37+
assert!(!flink.is_file());
38+
}
39+
40+
#[test]
41+
fn open_os_id() {
42+
let s1 = ShmemConf::new().size(4090).create().unwrap();
43+
44+
// Open with the unique os id
45+
let os_id = s1.get_os_id().to_string();
46+
let mut s2 = ShmemConf::new().os_id(&os_id).open().unwrap();
47+
48+
assert!(!s2.is_owner());
49+
assert!(!s2.get_os_id().is_empty());
50+
assert!(s2.len() >= 4090);
51+
assert!(!s2.as_ptr().is_null());
52+
unsafe {
53+
assert_eq!(s2.as_slice().len(), s2.len());
54+
assert_eq!(s2.as_slice_mut().len(), s2.len());
55+
}
56+
57+
// Drop the owner of the mapping
58+
drop(s1);
59+
60+
// Make sure it can be openned again
61+
assert!(ShmemConf::new().os_id(&os_id).open().is_err());
62+
63+
drop(s2);
64+
}
65+
66+
#[test]
67+
fn open_flink() {
68+
let flink = Path::new("create_new2");
69+
let s1 = ShmemConf::new().flink(flink).size(4090).create().unwrap();
70+
71+
// Open with file base link
72+
let mut s2 = ShmemConf::new().flink(&flink).open().unwrap();
73+
74+
assert!(!s2.is_owner());
75+
assert!(!s2.get_os_id().is_empty());
76+
assert!(flink.is_file());
77+
assert!(s2.len() >= 4090);
78+
assert!(!s2.as_ptr().is_null());
79+
unsafe {
80+
assert_eq!(s2.as_slice().len(), s2.len());
81+
assert_eq!(s2.as_slice_mut().len(), s2.len());
82+
}
83+
84+
// Drop the owner of the mapping
85+
drop(s1);
86+
87+
// Make sure it can be openned again
88+
assert!(ShmemConf::new().flink(&flink).open().is_err());
89+
90+
drop(s2);
91+
}

0 commit comments

Comments
 (0)