1- use nix:: mqueue:: { mq_open, mq_close, mq_send, mq_receive, mq_getattr} ;
1+ use nix:: mqueue:: { mq_open, mq_close, mq_send, mq_receive, mq_getattr, mq_unlink } ;
22use nix:: mqueue:: { O_CREAT , O_WRONLY , O_RDONLY } ;
33use nix:: mqueue:: MqAttr ;
44use nix:: sys:: stat:: { S_IWUSR , S_IRUSR , S_IRGRP , S_IROTH } ;
@@ -9,11 +9,11 @@ use libc::c_long;
99use nix:: unistd:: { fork, read, write, pipe} ;
1010use nix:: unistd:: Fork :: { Child , Parent } ;
1111use nix:: sys:: wait:: * ;
12-
13-
12+ use nix :: errno :: Errno :: * ;
13+ use nix :: Error :: Sys ;
1414
1515#[ test]
16- fn mq_send_and_receive ( ) {
16+ fn test_mq_send_and_receive ( ) {
1717
1818 const MSG_SIZE : c_long = 32 ;
1919 let attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
@@ -53,7 +53,7 @@ fn mq_send_and_receive() {
5353
5454
5555#[ test]
56- fn mq_get_attr ( ) {
56+ fn test_mq_get_attr ( ) {
5757 const MSG_SIZE : c_long = 32 ;
5858 let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
5959 let mq_name = & CString :: new ( "/attr_test_get_attr" . as_bytes ( ) . as_ref ( ) ) . unwrap ( ) ;
@@ -62,3 +62,23 @@ fn mq_get_attr() {
6262 assert ! ( read_attr. unwrap( ) == initial_attr) ;
6363 mq_close ( mqd) . unwrap ( ) ;
6464}
65+
66+ #[ test]
67+ fn test_mq_unlink ( ) {
68+ const MSG_SIZE : c_long = 32 ;
69+ let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
70+ let mq_name_opened = & CString :: new ( "/mq_unlink_test" . as_bytes ( ) . as_ref ( ) ) . unwrap ( ) ;
71+ let mq_name_not_opened = & CString :: new ( "/mq_unlink_test" . as_bytes ( ) . as_ref ( ) ) . unwrap ( ) ;
72+ let mqd = mq_open ( mq_name_opened, O_CREAT | O_WRONLY , S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH , & initial_attr) . unwrap ( ) ;
73+
74+ let res_unlink = mq_unlink ( mq_name_opened) ;
75+ assert ! ( res_unlink == Ok ( ( ) ) ) ;
76+
77+ let res_unlink_not_opened = mq_unlink ( mq_name_not_opened) ;
78+ assert ! ( res_unlink_not_opened == Err ( Sys ( ENOENT ) ) ) ;
79+
80+ mq_close ( mqd) . unwrap ( ) ;
81+ let res_unlink_after_close = mq_unlink ( mq_name_opened) ;
82+ assert ! ( res_unlink_after_close == Err ( Sys ( ENOENT ) ) ) ;
83+
84+ }
0 commit comments