code: def test_video_indexes(self):
      dataset = fo.Dataset()
  
      sample = fo.Sample(filepath="video.mp4", field="hi")
      sample.frames[1] = fo.Frame(
          field="hi", cls=fo.Classification(label="cat")
      )
  
      dataset.add_sample(sample)
  
      info = dataset.get_index_information()
      indexes = dataset.list_indexes()
  
      default_indexes = {
          "id",
          "filepath",
          "frames.id",
          "frames._sample_id_1_frame_number_1",
      }
      self.assertSetEqual(set(info.keys()), default_indexes)
      self.assertSetEqual(set(indexes), default_indexes)
  
      dataset.create_index("frames.id", unique=True)  # already exists
      dataset.create_index("frames.id")  # sufficient index exists
      with self.assertRaises(ValueError):
          dataset.drop_index("frames.id")  # can't drop default
  
      name = dataset.create_index("frames.field")
      self.assertEqual(name, "frames.field")
      self.assertIn("frames.field", dataset.list_indexes())
  
      dataset.drop_index("frames.field")
      self.assertNotIn("frames.field", dataset.list_indexes())
  
      name = dataset.create_index("frames.cls.label")
      self.assertEqual(name, "frames.cls.label")
      self.assertIn("frames.cls.label", dataset.list_indexes())
  
      dataset.drop_index("frames.cls.label")
      self.assertNotIn("frames.cls.label", dataset.list_indexes())
  
      compound_index_name = dataset.create_index(
          [("frames.id", 1), ("frames.field", 1)]
      )
      self.assertIn(compound_index_name, dataset.list_indexes())
  
      dataset.drop_index(compound_index_name)
      self.assertNotIn(compound_index_name, dataset.list_indexes())
  
      with self.assertRaises(ValueError):
          dataset.create_index("frames.non_existent_field")
  
imports: from copy import deepcopy
  from datetime import date, datetime
  from bson import ObjectId
  import numpy
  import unittest
  import fiftyone
  import fiftyone.core.odm
  from fiftyone import ViewField
  from decorators import drop_datasets
label_desc: Use image node_id 3 for calling the VideoTests obj's underlying member method code with example usage: obj.test_video_indexes() without return types