code: def test_should_convert_to_grayscale(self):
      try_to_import_cv2()
      import cv2
  
      arr = cv2.imread(
          f"{EvaDB_ROOT_DIR}/test/unit_tests/functions/data/dog.jpeg"
      )
      df = pd.DataFrame([[arr]])
      modified_arr = self.to_grayscale_instance(df)[
          "grayscale_frame_array"
      ]
      cv2.imwrite(
          f"{EvaDB_ROOT_DIR}/test/unit_tests/functions/data/tmp.jpeg",
          modified_arr[0],
      )
      actual_array = cv2.imread(
          f"{EvaDB_ROOT_DIR}/test/unit_tests/functions/data/tmp.jpeg"
      )
      expected_arr = cv2.imread(
          f"{EvaDB_ROOT_DIR}/test/unit_tests/functions/data/grayscale_dog.jpeg"
      )
      self.assertEqual(np.sum(actual_array - expected_arr), 0)
      file_remove(
          Path(
              f"{EvaDB_ROOT_DIR}/test/unit_tests/functions/data/tmp.jpeg"
          )
      )
  
file_path: evadb/test/integration_tests/long/functions/ndarray/test_to_grayscale.py
imports: import unittest
  from pathlib import Path
  from test.util import file_remove
  import numpy
  import pandas
  from evadb.configuration.constants import EvaDB_ROOT_DIR
  from evadb.functions.ndarray.to_grayscale import ToGrayscale
  from evadb.utils.generic_utils import try_to_import_cv2
label_desc: Use image node_id 3 for calling the ToGrayscaleTests obj's underlying member method code with example usage: obj.test_should_convert_to_grayscale() without return types