diff --git a/kernel/syscall/mod.rs b/kernel/syscall/mod.rs index 5c26941..2107d4f 100644 --- a/kernel/syscall/mod.rs +++ b/kernel/syscall/mod.rs @@ -12,7 +12,7 @@ pub mod fs; pub mod process; /// System call list -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum Call { /// Exit syscall Exit, @@ -47,7 +47,7 @@ impl From for Call { } /// The error number for an invalid value -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum Error { /// Operation not permitted NotPermitted, diff --git a/kernel/tests/mod.rs b/kernel/tests/mod.rs index 3603cde..fa55c4d 100644 --- a/kernel/tests/mod.rs +++ b/kernel/tests/mod.rs @@ -1,5 +1,7 @@ use arch::interrupt::{enable_interrupts, halt}; +use syscall; + #[test] fn halt_with_interrupts() { unsafe { @@ -7,3 +9,23 @@ fn halt_with_interrupts() { halt(); } } + +#[test] +fn open_stdio() { + // Test opening stdin + assert_eq!(syscall::open(b"debug:", 0), Ok(0)); + + // Test opening stdout + assert_eq!(syscall::open(b"debug:", 0), Ok(1)); + + // Test opening stderr + assert_eq!(syscall::open(b"debug:", 0), Ok(2)); + + // Test writing stdout + let stdout_str = b"STDOUT"; + assert_eq!(syscall::write(1, stdout_str), Ok(stdout_str.len())); + + // Test writing stderr + let stderr_str = b"STDERR"; + assert_eq!(syscall::write(2, stderr_str), Ok(stderr_str.len())); +}