use vyre_foundation::ir::{BufferAccess, BufferDecl, DataType};
#[test]
fn with_count_zero_preserves_runtime_sized_encoding() {
let buf = BufferDecl::storage("x", 0, BufferAccess::ReadWrite, DataType::U32).with_count(0);
assert_eq!(buf.count(), 0);
}
#[test]
fn with_count_one_succeeds_and_stores_exactly_one() {
let buf = BufferDecl::storage("x", 0, BufferAccess::ReadWrite, DataType::U32).with_count(1);
assert_eq!(buf.count(), 1);
}
#[test]
fn with_count_max_u32_succeeds() {
let buf =
BufferDecl::storage("x", 0, BufferAccess::ReadWrite, DataType::U32).with_count(u32::MAX);
assert_eq!(buf.count(), u32::MAX);
}
#[test]
fn workgroup_zero_count_is_constructible_for_validator_rejection() {
let buf = BufferDecl::workgroup("scratch", 0, DataType::U32);
assert_eq!(buf.count(), 0);
assert_eq!(buf.access(), BufferAccess::Workgroup);
}
#[test]
fn workgroup_positive_count_succeeds() {
let buf = BufferDecl::workgroup("scratch", 64, DataType::U32);
assert_eq!(buf.count(), 64);
assert_eq!(buf.access(), BufferAccess::Workgroup);
}
#[test]
fn post_construction_mutation_to_zero_is_caught_by_validator_not_constructor() {
let mut buf = BufferDecl::workgroup("scratch", 64, DataType::U32);
buf.count = 0;
assert_eq!(buf.count(), 0, "direct field mutation is permitted today");
}