diff options
author | HampusM <hampus@hampusmat.com> | 2023-04-07 20:50:55 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-04-07 20:50:55 +0200 |
commit | 067d5c321ca186382cedab2718cbe3ecd0651a33 (patch) | |
tree | ab50e744f6c651ccbd96f6f883165a6b4db65e88 /src/lib.rs | |
parent | 966ebb03abd8ae5ed4f47f4b53c00222269a56b4 (diff) |
test: add command function unit tests
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -18,3 +18,47 @@ mod ffi include!(concat!(env!("OUT_DIR"), "/bindings.rs")); } + +#[cfg(test)] +mod tests +{ + use std::mem::transmute; + use std::sync::atomic::{AtomicBool, Ordering}; + + use super::*; + + #[test] + fn can_set_and_use_command_function() + { + static HAS_CALLED_FUNC: AtomicBool = AtomicBool::new(false); + + extern "C" fn func(x: GLint, y: GLint, width: GLsizei, height: GLsizei) + { + assert_eq!(x, 123); + assert_eq!(y, 9); + assert_eq!(width, 1920); + assert_eq!(height, 1080); + + HAS_CALLED_FUNC.store(true, Ordering::Relaxed); + } + + unsafe { + functions::glViewport = transmute(func as *const ()); + } + + unsafe { + Viewport(123, 9, 1920, 1080); + } + + assert!(HAS_CALLED_FUNC.load(Ordering::Relaxed)); + } + + #[test] + #[should_panic] + fn no_set_command_function_ptr_panics() + { + unsafe { + AttachShader(2, 30); + } + } +} |