xref: /relibc/src/platform/test/mod.rs (revision 3a923aa62d168d05c45d02c8e53804d7fdfe7f05)
1 use crate::platform::{Pal, Sys};
2 
3 // Stub for call used in exit
4 #[no_mangle]
5 pub extern "C" fn pthread_terminate() {}
6 
7 mod epoll;
8 
9 #[test]
10 fn access() {
11     use crate::header::{errno, unistd};
12 
13     //TODO: create test files
14     assert_eq!(Sys::access(c_str!("not a file!"), unistd::F_OK), !0);
15     assert_eq!(Sys::access(c_str!("README.md"), unistd::R_OK), 0);
16     assert_eq!(Sys::access(c_str!("README.md"), unistd::W_OK), 0);
17     assert_eq!(Sys::access(c_str!("README.md"), unistd::X_OK), !0);
18 }
19 
20 #[test]
21 fn brk() {
22     use core::ptr;
23 
24     let current = Sys::brk(ptr::null_mut());
25     assert_ne!(current, ptr::null_mut());
26 
27     let request = unsafe { current.add(4096) };
28     let next = Sys::brk(request);
29     assert_eq!(next, request);
30 }
31 
32 #[test]
33 fn chdir() {
34     //TODO: create test files
35     assert_eq!(Sys::chdir(c_str!("src")), 0);
36 }
37 
38 //TODO: chmod
39 
40 //TODO: chown
41 
42 #[test]
43 fn clock_gettime() {
44     use crate::header::time;
45 
46     {
47         let mut timespec = time::timespec {
48             tv_sec: -1,
49             tv_nsec: -1,
50         };
51         assert_eq!(Sys::clock_gettime(time::CLOCK_REALTIME, &mut timespec), 0);
52         assert_ne!(timespec.tv_sec, -1);
53         assert_ne!(timespec.tv_nsec, -1);
54     }
55 
56     {
57         let mut timespec = time::timespec {
58             tv_sec: -1,
59             tv_nsec: -1,
60         };
61         assert_eq!(Sys::clock_gettime(time::CLOCK_MONOTONIC, &mut timespec), 0);
62         assert_ne!(timespec.tv_sec, -1);
63         assert_ne!(timespec.tv_nsec, -1);
64     }
65 }
66