code: def test_optional_params(self, clip, grid, device, dtype):
      C, H, W = 1, 10, 20
      img = torch.rand(C, H, W, device=device, dtype=dtype)
      if clip is None:
          res = enhance.equalize_clahe(img, grid_size=grid)
      elif grid is None:
          res = enhance.equalize_clahe(img, clip_limit=clip)
      else:
          res = enhance.equalize_clahe(img, clip, grid)
      assert isinstance(res, torch.Tensor)
      assert res.shape == img.shape
  
imports: from typing import Tuple
  import pytest
  import torch
  from torch.autograd import gradcheck
  from kornia import enhance
  from kornia.geometry import rotate
  from kornia.testing import BaseTester, tensor_to_gradcheck_var
label_desc: Use image node_id 3 for calling the TestEqualization obj's underlying member method code with example usage: obj.test_optional_params(clip, grid, device, dtype) without return types