code: def test_wrong_channels_count(self):
      with pytest.raises(ValueError, match="3 or 4 output channels"):
          ImageFilter.Color3DLUT.generate(
              5, channels=2, callback=lambda r, g, b: (r, g, b)
          )
  
      with pytest.raises(
          ValueError, match="should have either channels"
      ):
          ImageFilter.Color3DLUT.generate(
              5, lambda r, g, b: (r, g, b, r)
          )
  
      with pytest.raises(
          ValueError, match="should have either channels"
      ):
          ImageFilter.Color3DLUT.generate(
              5, channels=4, callback=lambda r, g, b: (r, g, b)
          )
  
imports: from __future__ import annotations
  from array import array
  import pytest
  from PIL import Image, ImageFilter
  from .helper import assert_image_equal
label_desc: Use image node_id 1 for calling the TestGenerateColorLut3D obj's underlying member method code with example usage: obj.test_wrong_channels_count() without return types