From 425283f1cd48cbb5bc8b0f1814f8a118c891a495 Mon Sep 17 00:00:00 2001 From: AlsoSylv <64978191+AlsoSylv@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:12:44 -0500 Subject: [PATCH] Add tests for new `wrap` functionality --- src/command_queue.rs | 20 ++++++++++++++++++++ src/context.rs | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/command_queue.rs b/src/command_queue.rs index 0f11e17..06df536 100644 --- a/src/command_queue.rs +++ b/src/command_queue.rs @@ -1561,4 +1561,24 @@ mod tests { Err(e) => println!("OpenCL error, queue.properties_array(): {}", e), } } + + #[test] + fn test_command_queue_from_cl3() { + let platforms = get_platforms().unwrap(); + assert!(0 < platforms.len()); + + // Get the first platform + let platform = &platforms[0]; + + let devices = platform.get_devices(CL_DEVICE_TYPE_GPU).unwrap(); + assert!(0 < devices.len()); + + // Get the first device + let device = Device::new(devices[0]); + let context = Context::from_device(&device).unwrap(); + + let command_queue = unsafe { cl3::command_queue::create_command_queue(context.get(), device.id(), 0) }.expect("Failed to create command queue"); + let command_queue = CommandQueue::wrap_cl_command_queue(command_queue, &device).expect("Failed to get max_item_working_size"); + assert!(command_queue.properties().unwrap() == 0, "Properties were set to 0 above") + } } diff --git a/src/context.rs b/src/context.rs index 5e50b90..f9804e3 100644 --- a/src/context.rs +++ b/src/context.rs @@ -471,4 +471,27 @@ mod tests { Err(e) => println!("OpenCL error, Context::from_device_type: {}", e), } } + + #[test] + fn test_context_from_cl3() { + let platforms = get_platforms().unwrap(); + assert!(0 < platforms.len()); + + // Get the first platform + let platform = &platforms[0]; + + let devices = platform.get_devices(CL_DEVICE_TYPE_GPU).unwrap(); + assert!(0 < devices.len()); + + let context = cl3::context::create_context(&devices, ptr::null(), None, ptr::null_mut()); + match context { + Ok(context) => { + let device = Device::new(devices[0]); + let context = Context::wrap_cl_command_queue(context, &device); + let ref_cnt = context.reference_count().unwrap(); + assert!(ref_cnt == 1, "Reference count was not 1, was instead {ref_cnt}") + }, + Err(e) => println!("OpenCL error, create_context: {e}") + } + } }