]> git.lizzy.rs Git - rust.git/blob - library/std/src/os/fd/tests.rs
Auto merge of #100035 - workingjubilee:merge-functions, r=nikic
[rust.git] / library / std / src / os / fd / tests.rs
1 #[cfg(any(unix, target_os = "wasi"))]
2 #[test]
3 fn test_raw_fd() {
4     #[cfg(unix)]
5     use crate::os::unix::io::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
6     #[cfg(target_os = "wasi")]
7     use crate::os::wasi::io::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
8
9     let raw_fd: RawFd = crate::io::stdin().as_raw_fd();
10
11     let stdin_as_file = unsafe { crate::fs::File::from_raw_fd(raw_fd) };
12     assert_eq!(stdin_as_file.as_raw_fd(), raw_fd);
13     assert_eq!(unsafe { BorrowedFd::borrow_raw(raw_fd).as_raw_fd() }, raw_fd);
14     assert_eq!(stdin_as_file.into_raw_fd(), 0);
15 }
16
17 #[cfg(any(unix, target_os = "wasi"))]
18 #[test]
19 fn test_fd() {
20     #[cfg(unix)]
21     use crate::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
22     #[cfg(target_os = "wasi")]
23     use crate::os::wasi::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
24
25     let stdin = crate::io::stdin();
26     let fd: BorrowedFd<'_> = stdin.as_fd();
27     let raw_fd: RawFd = fd.as_raw_fd();
28     let owned_fd: OwnedFd = unsafe { OwnedFd::from_raw_fd(raw_fd) };
29
30     let stdin_as_file = crate::fs::File::from(owned_fd);
31
32     assert_eq!(stdin_as_file.as_fd().as_raw_fd(), raw_fd);
33     assert_eq!(Into::<OwnedFd>::into(stdin_as_file).into_raw_fd(), raw_fd);
34 }
35
36 #[cfg(any(unix, target_os = "wasi"))]
37 #[test]
38 fn test_niche_optimizations() {
39     use crate::mem::size_of;
40     #[cfg(unix)]
41     use crate::os::unix::io::{BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
42     #[cfg(target_os = "wasi")]
43     use crate::os::wasi::io::{BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
44
45     assert_eq!(size_of::<Option<OwnedFd>>(), size_of::<RawFd>());
46     assert_eq!(size_of::<Option<BorrowedFd<'static>>>(), size_of::<RawFd>());
47     unsafe {
48         assert_eq!(OwnedFd::from_raw_fd(RawFd::MIN).into_raw_fd(), RawFd::MIN);
49         assert_eq!(OwnedFd::from_raw_fd(RawFd::MAX).into_raw_fd(), RawFd::MAX);
50         assert_eq!(Some(OwnedFd::from_raw_fd(RawFd::MIN)).unwrap().into_raw_fd(), RawFd::MIN);
51         assert_eq!(Some(OwnedFd::from_raw_fd(RawFd::MAX)).unwrap().into_raw_fd(), RawFd::MAX);
52     }
53 }