use std::ffi::CString;
const DATASET_SIZE: usize = 1 << 20;
#[test]
fn fill() {
let src = r#"
__kernel void add(__global float* buffer, float addend) {
buffer[get_global_id(0)] += addend;
}
"#;
let platform_id = crate::default_platform().unwrap();
let device_ids = crate::get_device_ids(&platform_id, None, None).unwrap();
let device = device_ids[0];
let context_properties = crate::ContextProperties::new().platform(platform_id);
let context = crate::create_context(Some(&context_properties),
&[device], None, None).unwrap();
let src_cstring = CString::new(src).unwrap();
let program = crate::create_program_with_source(&context, &[src_cstring]).unwrap();
crate::build_program(&program, None::<&[()]>, &CString::new("").unwrap(),
None, None).unwrap();
let queue = crate::create_command_queue(&context, &device, Some(crate::QUEUE_PROFILING_ENABLE))
.unwrap();
let buffer = unsafe { crate::create_buffer::<_, f32>(&context, crate::MEM_READ_WRITE, DATASET_SIZE, None).unwrap() };
crate::enqueue_fill_buffer::<f32, _, _, _>(&queue, &buffer, 5.0f32, 0, DATASET_SIZE,
None::<crate::Event>, None::<&mut crate::Event>, None).unwrap();
let mut vec = vec![0.0f32; DATASET_SIZE];
unsafe { crate::enqueue_read_buffer::<f32, _, _, _>(&queue, &buffer, true, 0, &mut vec,
None::<crate::Event>, None::<&mut crate::Event>).unwrap() };
assert!(vec.iter().all(|x| *x == 5.0f32));
}