From 067d5c321ca186382cedab2718cbe3ecd0651a33 Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 7 Apr 2023 20:50:55 +0200 Subject: test: add command function unit tests --- src/lib.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 88eb0a3..fc0400e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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); + } + } +} -- cgit v1.2.3-18-g5258