summaryrefslogtreecommitdiff
path: root/test/test_mq.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_mq.rs')
-rw-r--r--test/test_mq.rs30
1 files changed, 25 insertions, 5 deletions
diff --git a/test/test_mq.rs b/test/test_mq.rs
index 7821ba51..ecd6e5b9 100644
--- a/test/test_mq.rs
+++ b/test/test_mq.rs
@@ -1,4 +1,4 @@
-use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive, mq_getattr};
+use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive, mq_getattr, mq_unlink};
use nix::mqueue::{O_CREAT, O_WRONLY, O_RDONLY};
use nix::mqueue::MqAttr;
use nix::sys::stat::{S_IWUSR, S_IRUSR, S_IRGRP, S_IROTH};
@@ -9,11 +9,11 @@ use libc::c_long;
use nix::unistd::{fork, read, write, pipe};
use nix::unistd::Fork::{Child, Parent};
use nix::sys::wait::*;
-
-
+use nix::errno::Errno::*;
+use nix::Error::Sys;
#[test]
-fn mq_send_and_receive() {
+fn test_mq_send_and_receive() {
const MSG_SIZE: c_long = 32;
let attr = MqAttr::new(0, 10, MSG_SIZE, 0);
@@ -53,7 +53,7 @@ fn mq_send_and_receive() {
#[test]
-fn mq_get_attr() {
+fn test_mq_get_attr() {
const MSG_SIZE: c_long = 32;
let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0);
let mq_name = &CString::new("/attr_test_get_attr".as_bytes().as_ref()).unwrap();
@@ -62,3 +62,23 @@ fn mq_get_attr() {
assert!(read_attr.unwrap() == initial_attr);
mq_close(mqd).unwrap();
}
+
+#[test]
+fn test_mq_unlink() {
+ const MSG_SIZE: c_long = 32;
+ let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0);
+ let mq_name_opened = &CString::new("/mq_unlink_test".as_bytes().as_ref()).unwrap();
+ let mq_name_not_opened = &CString::new("/mq_unlink_test".as_bytes().as_ref()).unwrap();
+ let mqd = mq_open(mq_name_opened, O_CREAT | O_WRONLY, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH, &initial_attr).unwrap();
+
+ let res_unlink = mq_unlink(mq_name_opened);
+ assert!(res_unlink == Ok(()) );
+
+ let res_unlink_not_opened = mq_unlink(mq_name_not_opened);
+ assert!(res_unlink_not_opened == Err(Sys(ENOENT)) );
+
+ mq_close(mqd).unwrap();
+ let res_unlink_after_close = mq_unlink(mq_name_opened);
+ assert!(res_unlink_after_close == Err(Sys(ENOENT)) );
+
+}