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