code: def test_get_all_exif_feature_names(self):
      image_dataset = load_fridge_object_detection_dataset().head(2)
      exif_feature_names = get_all_exif_feature_names(image_dataset)
      assert len(exif_feature_names) == 11
      assert set(exif_feature_names) == set(
          [
              "Orientation",
              "ExifOffset",
              "ImageWidth",
              "GPSInfo",
              "Model",
              "DateTime",
              "YCbCrPositioning",
              "ImageLength",
              "ResolutionUnit",
              "Software",
              "Make",
          ]
      )
  
file_path: responsible-ai-toolbox/responsibleai_vision/tests/test_image_utils.py
imports: from collections import Counter
  from http.client import HTTPMessage
  from math import isclose
  from unittest.mock import Mock, patch
  from urllib.parse import urlparse
  import numpy
  from common_vision_utils import load_fridge_object_detection_dataset
  from responsibleai_vision.common.constants import ImageColumns
  from responsibleai_vision.utils.image_reader import _get_retry_session
  from responsibleai_vision.utils.image_reader import _requests_sessions
  from responsibleai_vision.utils.image_reader import get_all_exif_feature_names
  from responsibleai_vision.utils.image_utils import BOTTOM_X, BOTTOM_Y, HEIGHT, IS_CROWD, TOP_X, TOP_Y, WIDTH, classes_to_dict, transform_object_detection_labels
label_desc: Use image node_id 4 for calling the TestImageUtils obj's underlying member method code with example usage: obj.test_get_all_exif_feature_names() without return types