code: def test_properties(tmp_path, test_images):
      filename = tmp_path / "test.tiff"
      data = np.full((255, 255, 3), 42, dtype=np.uint8)
      iio.imwrite(filename, data)
  
      props = iio.improps(filename)
      assert props.shape == (255, 255, 3)
      assert props.n_images is None
  
      props = iio.improps(filename, index=...)
      assert props.shape == (1, 255, 255, 3)
      assert props.n_images == 1
  
      data = np.full((6, 255, 255, 3), 42, dtype=np.uint8)
      iio.imwrite(filename, data)
  
      props = iio.improps(filename, page=3)
      assert props.shape == (255, 255, 3)
      assert props.n_images is None
  
      props = iio.improps(filename, index=...)
      assert props.shape == (1, 255, 255, 3)
      assert props.n_images == 1
  
      props = iio.improps(filename, index=..., page=...)
      assert props.shape == (6, 255, 255, 3)
      assert props.n_images == 6
  
      # read file without resolution tags
      props = iio.improps(test_images / "multipage_rgb.tif")
      assert props.spacing is None
  
imports: import datetime
  import numpy
  import pytest
  import io
  from copy import deepcopy
  import struct
  import imageio.v3
  from imageio.config import known_plugins, known_extensions
label_desc: Use image node_id 21 for calling a global function with example usage: test_properties(tmp_path, test_images) without return types