blob: cf14df777942e91e328c34c0d1416c4c5203c942 [file] [log] [blame]
#[cfg(not(any(
target_os = "emscripten",
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "openbsd",
target_os = "redox",
target_os = "wasi",
)))]
use rustix::thread::{clock_nanosleep_absolute, clock_nanosleep_relative, ClockId};
#[cfg(not(target_os = "redox"))]
use {
rustix::io,
rustix::thread::{nanosleep, NanosleepRelativeResult, Timespec},
};
#[cfg(not(target_os = "redox"))]
#[test]
fn test_invalid_nanosleep() {
match nanosleep(&Timespec {
tv_sec: 0,
tv_nsec: 1_000_000_000,
}) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match nanosleep(&Timespec {
tv_sec: 0,
tv_nsec: !0,
}) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match nanosleep(&Timespec {
tv_sec: !0,
tv_nsec: 1_000_000_000,
}) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match nanosleep(&Timespec {
tv_sec: !0,
tv_nsec: !0,
}) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}
#[cfg(not(any(
target_os = "emscripten",
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "openbsd",
target_os = "redox",
target_os = "wasi",
)))]
#[test]
fn test_invalid_nanosleep_absolute() {
match clock_nanosleep_absolute(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: 1000000000,
},
) {
Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_absolute(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: !0,
},
) {
Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_absolute(
ClockId::Monotonic,
&Timespec {
tv_sec: !0,
tv_nsec: 1_000_000_000,
},
) {
Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_absolute(
ClockId::Monotonic,
&Timespec {
tv_sec: !0,
tv_nsec: !0,
},
) {
Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}
#[cfg(not(any(
target_os = "emscripten",
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "openbsd",
target_os = "redox",
target_os = "wasi",
)))]
#[test]
fn test_invalid_nanosleep_relative() {
match clock_nanosleep_relative(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: 1_000_000_000,
},
) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_relative(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: !0,
},
) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_relative(
ClockId::Monotonic,
&Timespec {
tv_sec: !0,
tv_nsec: 1_000_000_000,
},
) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
match clock_nanosleep_relative(
ClockId::Monotonic,
&Timespec {
tv_sec: !0,
tv_nsec: !0,
},
) {
NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}
#[cfg(not(target_os = "redox"))]
#[test]
fn test_zero_nanosleep() {
match nanosleep(&Timespec {
tv_sec: 0,
tv_nsec: 0,
}) {
NanosleepRelativeResult::Ok => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}
#[cfg(not(any(
target_os = "emscripten",
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "openbsd",
target_os = "redox",
target_os = "wasi",
)))]
#[test]
fn test_zero_nanosleep_absolute() {
match clock_nanosleep_absolute(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: 0,
},
) {
Ok(()) => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}
#[cfg(not(any(
target_os = "emscripten",
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "openbsd",
target_os = "redox",
target_os = "wasi",
)))]
#[test]
fn test_zero_nanosleep_relative() {
match clock_nanosleep_relative(
ClockId::Monotonic,
&Timespec {
tv_sec: 0,
tv_nsec: 0,
},
) {
NanosleepRelativeResult::Ok => (),
otherwise => panic!("unexpected resut: {:?}", otherwise),
}
}