use super::*;
#[test]
fn test_f062_wgsl_generation_valid() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(wgsl.contains("@compute"), "Missing @compute attribute");
assert!(wgsl.contains("@workgroup_size"), "Missing workgroup_size");
assert!(
wgsl.contains("workgroupBarrier"),
"Missing workgroup barrier"
);
}
#[test]
fn test_f062_wgsl_has_bindings() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("@group(0) @binding(0)"),
"Missing input binding"
);
assert!(
wgsl.contains("@group(0) @binding(1)"),
"Missing output binding"
);
assert!(
wgsl.contains("@group(0) @binding(2)"),
"Missing sizes binding"
);
}
#[test]
fn test_f062_wgsl_has_shared_memory() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("var<workgroup>"),
"Missing workgroup shared memory"
);
}
#[test]
fn test_f063_wgsl_batch_size_embedded() {
let kernel = Lz4WarpCompressKernel::new(500);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("500u"),
"Batch size should be embedded in WGSL"
);
}
#[test]
fn test_f063_wgsl_has_entry_point() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("fn lz4_compress_warp"),
"Missing entry point function"
);
}
#[test]
fn test_f064_wgsl_has_builtins() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("@builtin(workgroup_id)"),
"Missing workgroup_id builtin"
);
assert!(
wgsl.contains("@builtin(local_invocation_id)"),
"Missing local_invocation_id builtin"
);
}
#[test]
fn test_f064_dual_backend_consistency() {
let kernel = Lz4WarpCompressKernel::new(100);
let ptx = kernel.emit_ptx();
let wgsl = kernel.emit_wgsl();
assert!(
ptx.contains("bar.sync") || ptx.contains("barrier"),
"PTX missing barrier"
);
assert!(wgsl.contains("workgroupBarrier"), "WGSL missing barrier");
assert!(ptx.contains("lz4_compress_warp"));
assert!(wgsl.contains("lz4_compress_warp"));
}
#[test]
fn test_f046_wgsl_zero_page_detection() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
assert!(
wgsl.contains("thread_or = thread_or |"),
"Missing thread OR reduction"
);
assert!(
wgsl.contains("if (page_or == 0u)"),
"Missing zero page check"
);
assert!(wgsl.contains("20u"), "Missing compressed zero page size");
}
#[test]
fn test_f047_wgsl_reduction_barrier() {
let kernel = Lz4WarpCompressKernel::new(100);
let wgsl = kernel.emit_wgsl();
let barrier_count = wgsl.matches("workgroupBarrier()").count();
assert!(
barrier_count >= 3,
"Should have at least 3 barriers, found {}",
barrier_count
);
}