///|
fn main raise {
  let window = @exr.Window::new(-4, -2, 11, 7)
  let plane = fn(
    name : String,
    kind : @exr.PixelType,
    scale : Double,
  ) -> @exr.Plane raise {
    @exr.Plane::from_values(
      { name, kind, linear: false, },
      window,
      Array::makei(window.pixels(), i => (i % 16).to_double() * scale),
    )
  }
  let image = @exr.Image::new(
    window,
    [
      plane("beauty.R", F16, 0.5),
      plane("beauty.G", F16, 0.25),
      plane("beauty.B", F16, 0.125),
      plane("depth.Z", F32, 10.0),
    ],
    metadata=[@exr.Attribute::text("comments", "Original render pass exchange")],
  )
  let file = @exr.ExrFile::open(@exr.encode(image))
  let roi = @exr.Window::new(0, 0, 7, 3)
  let selected = file.read(
    region=Some(roi),
    channels=Some(["beauty.R", "beauty.G", "beauty.B"]),
  )
  assert_eq(selected.layers(), ["beauty"])
  let preview = selected.preview_rgba(rgb=["beauty.R", "beauty.G", "beauty.B"])
  assert_eq(preview.length(), 8 * 4 * 4)
  assert_true(selected.plane("beauty.R").statistics().maximum.unwrap() > 1.0)
  assert_eq(
    selected.plane("beauty.R").bits_at(2, 1),
    image.plane("beauty.R").bits_at(2, 1),
  )
  let exported = @exr.ExrFile::open(@exr.encode(selected, compression=Rle)).read()
  assert_eq(exported.display_window(), window)
  assert_eq(exported.channels().length(), 3)
  println(
    "render assets: layer projection, absolute ROI, HDR sample preservation and explicit RGBA preview verified",
  )
}