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