xref: /relibc/src/platform/test/mod.rs (revision 7d27737c3ffa5bbdf5d00592bb95abf1f9703aee)
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::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::F_OK), 0);
16     assert_eq!(Sys::access(c_str!("README.md"), unistd::R_OK), 0);
17     assert_eq!(Sys::access(c_str!("README.md"), unistd::W_OK), 0);
18     assert_eq!(Sys::access(c_str!("README.md"), unistd::X_OK), !0);
19 }
20 
21 #[test]
22 fn brk() {
23     use core::ptr;
24 
25     let current = Sys::brk(ptr::null_mut());
26     assert_ne!(current, ptr::null_mut());
27 
28     let request = unsafe { current.add(4096) };
29     let next = Sys::brk(request);
30     assert_eq!(next, request);
31 }
32 
33 #[test]
34 fn chdir() {
35     //TODO: create test files
36     assert_eq!(Sys::chdir(c_str!("src")), 0);
37 }
38 
39 //TODO: chmod
40 
41 //TODO: chown
42 
43 #[test]
44 fn clock_gettime() {
45     use crate::header::time;
46 
47     {
48         let mut timespec = time::timespec {
49             tv_sec: -1,
50             tv_nsec: -1,
51         };
52         assert_eq!(Sys::clock_gettime(time::CLOCK_REALTIME, &mut timespec), 0);
53         assert_ne!(timespec.tv_sec, -1);
54         assert_ne!(timespec.tv_nsec, -1);
55     }
56 
57     {
58         let mut timespec = time::timespec {
59             tv_sec: -1,
60             tv_nsec: -1,
61         };
62         assert_eq!(Sys::clock_gettime(time::CLOCK_MONOTONIC, &mut timespec), 0);
63         assert_ne!(timespec.tv_sec, -1);
64         assert_ne!(timespec.tv_nsec, -1);
65     }
66 }
67 
68 //TDOO: everything else
69 
70 #[test]
71 fn getrandom() {
72     use crate::platform::types::ssize_t;
73 
74     let mut arrays = [[0; 32]; 32];
75     for i in 1..arrays.len() {
76         assert_eq!(
77             Sys::getrandom(&mut arrays[i], 0),
78             arrays[i].len() as ssize_t
79         );
80 
81         for j in 0..arrays.len() {
82             if i != j {
83                 assert_ne!(&arrays[i], &arrays[j]);
84             }
85         }
86     }
87 }
88