///|
fn main {
let store = @store.MemoryStore::new()
guard @array.create_u8(
store,
@metadata.V3,
"large",
[16384, 16384],
[1024, 1024],
b'\x01',
)
is Some(image) else {
abort("large array metadata")
}
// The logical selection is 256 MiB, above the default 64 MiB read budget.
if image.read_region([0, 0], [16384, 16384]) is Some(_) {
abort("whole-region limit was not enforced")
}
guard @chunk.RegionTileCursor::new(
[16384, 16384],
[0, 0],
[16384, 16384],
[1024, 1024],
max_tile_elements=1048576,
)
is Some(tiles) else {
abort("tile plan")
}
let mut count = 0
let mut sum = 0L
let mut tile_count = 0
while tiles.next() is Some(tile) {
guard image.read_region(tile.origin, tile.extent) is Some(values) else {
abort("bounded tile read")
}
if values.length() != 1048576 {
abort("tile shape")
}
for value in values {
sum += value.to_int().to_int64()
count += 1
}
tile_count += 1
}
if count != 268435456 || sum != 268435456L || tile_count != 256 {
abort("tiled scan checksum")
}
println("Zarr tiled scan: 256 MiB logical array, 256 tiles, checksum=\{sum}")
}