///|
/// Reproducible correctness workload, not a claimed speed benchmark.
fn main raise {
let doc = @h5.Document::new()
for i = 0; i < 500; i = i + 1 {
let name = "/series_\{i}"
doc.add_group(name)
let data = @h5.ArrayValue::from_signed(
Simple([200]),
Array::makei(200, j => (i * 200 + j).to_int64()),
)
doc.add_dataset(name + "/data", data)
}
let bytes = doc.encode()
let file = @h5.H5File::open(bytes)
assert_eq(file.walk().length(), 1001)
let selection = @h5.Selection::new(Simple([200]), [
{ start: 150, stride: 3, count: 10, block: 1, },
])
for i in [0, 17, 249, 499] {
let value = file.read_selection("/series_\{i}/data", selection)
assert_eq(value.signed_at(0), (i * 200 + 150).to_int64())
assert_eq(value.signed_at(9), (i * 200 + 177).to_int64())
}
println(
"scale: 1001 objects, 100000 int64 values, sampled hyperslabs verified, \{bytes.length()} file bytes",
)
}