diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs
index 087aa090fec7fdf9de9f393f1bef446520d3a54c..7c17155a5e0b48c8d9aec1af8a3279196fc860a5 100644
--- a/src/header/time/mod.rs
+++ b/src/header/time/mod.rs
@@ -5,7 +5,7 @@ use crate::{
     platform::{self, types::*, Pal, Sys},
 };
 
-use self::constants::*;
+pub use self::constants::*;
 
 pub mod constants;
 mod strftime;
diff --git a/src/platform/mod.rs b/src/platform/mod.rs
index 402ad76d44174f1b48bf4e9b4570c199a59a3461..5b63f1a997aa3cceca47d8fb54fdc373bf62fa5b 100644
--- a/src/platform/mod.rs
+++ b/src/platform/mod.rs
@@ -26,6 +26,9 @@ mod sys;
 #[path = "redox/mod.rs"]
 mod sys;
 
+#[cfg(test)]
+mod test;
+
 mod pte;
 
 pub use self::rlb::{Line, RawLineBuffer};
diff --git a/src/platform/test/epoll.rs b/src/platform/test/epoll.rs
new file mode 100644
index 0000000000000000000000000000000000000000..58c750d197b359416fcaf710ca8fe0756ff74dd6
--- /dev/null
+++ b/src/platform/test/epoll.rs
@@ -0,0 +1 @@
+use crate::platform::{PalEpoll, Sys};
diff --git a/src/platform/test/mod.rs b/src/platform/test/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..3ac5a17166659584384f2661af8051a3849e8dcc
--- /dev/null
+++ b/src/platform/test/mod.rs
@@ -0,0 +1,70 @@
+use crate::platform::{Pal, Sys};
+
+// Stub for call used in exit
+#[no_mangle]
+pub extern "C" fn pthread_terminate() {}
+
+mod epoll;
+
+#[test]
+fn access() {
+    use crate::header::{
+        errno,
+        unistd,
+    };
+
+    //TODO: create test files
+    assert_eq!(Sys::access(c_str!("not a file!"), unistd::F_OK), !0);
+    assert_eq!(Sys::access(c_str!("README.md"), unistd::R_OK), 0);
+    assert_eq!(Sys::access(c_str!("README.md"), unistd::W_OK), 0);
+    assert_eq!(Sys::access(c_str!("README.md"), unistd::X_OK), !0);
+}
+
+#[test]
+fn brk() {
+    use core::ptr;
+
+    let current = Sys::brk(ptr::null_mut());
+    assert_ne!(current, ptr::null_mut());
+
+    let request = unsafe { current.add(4096) };
+    let next = Sys::brk(request);
+    assert_eq!(next, request);
+}
+
+#[test]
+fn chdir() {
+    //TODO: create test files
+    assert_eq!(Sys::chdir(c_str!("src")), 0);
+}
+
+//TODO: chmod
+
+//TODO: chown
+
+#[test]
+fn clock_gettime() {
+    use crate::header::{
+        time
+    };
+
+    {
+        let mut timespec = time::timespec {
+            tv_sec: -1,
+            tv_nsec: -1,
+        };
+        assert_eq!(Sys::clock_gettime(time::CLOCK_REALTIME, &mut timespec), 0);
+        assert_ne!(timespec.tv_sec, -1);
+        assert_ne!(timespec.tv_nsec, -1);
+    }
+
+    {
+        let mut timespec = time::timespec {
+            tv_sec: -1,
+            tv_nsec: -1,
+        };
+        assert_eq!(Sys::clock_gettime(time::CLOCK_MONOTONIC, &mut timespec), 0);
+        assert_ne!(timespec.tv_sec, -1);
+        assert_ne!(timespec.tv_nsec, -1);
+    }
+}