code: def test_series(test_images, tmp_path):
      im1 = iio.imread(test_images / "chelsea.png")
  
      ims1 = [im1, im1 * 0.8, im1 * 0.5]
  
      fname = str(tmp_path / "chelseam.bsdf")
      iio.mimsave(fname, ims1)
  
      # Does it look alright if we open it in bsdf without extensions?
      raw = bsdf.load(fname, [])
      assert isinstance(raw, list) and len(raw) == 3
      for r in raw:
          assert set(r.keys()) == set(["meta", "array"])
          assert isinstance(r["meta"], dict)
          assert isinstance(r["array"], dict)
          assert r["array"]["shape"] == list(im1.shape)
          assert isinstance(r["array"]["data"], bytes)
  
      # Read multi-image as singleton
      im2 = iio.imread(fname)
      assert np.all(im1 == im2)
  
      # Read multi-image as series
      ims2 = iio.mimread(fname)
      assert len(ims2) == 3 and all(
          np.all(ims1[i] == ims2[i]) for i in range(3)
      )
  
      # Read + write back without image extensions
      bsdf.save(fname, bsdf.load(fname))
      ims3 = iio.mimread(fname)
      assert len(ims3) == 3 and all(
          np.all(ims1[i] == ims3[i]) for i in range(3)
      )
  
file_path: imageio/tests/test_bsdf.py
imports: import numpy
  from pytest import raises
  from imageio import core
  import imageio.v2
  from imageio.plugins import _bsdf
  import pytest
  import sys
  from conftest import deprecated_test
label_desc: Use image node_id 4 for calling a global function with example usage: test_series(test_images, tmp_path) without return types