code: def test_remove_video_info_missing_or_incomplete_videos(self):
      video_infos_a = MOCK_VIDEO_INFOS.copy()
      video_frames_a = get_flat_video_frames("testdirectory2", "jpg")
      video_frames_a_copy = video_frames_a.copy()
  
      # No-Op
      VideoDataset._remove_video_info_missing_or_incomplete_videos(
          video_frames_a, video_infos_a
      )
  
      self.assertEqual(len(video_infos_a), len(MOCK_VIDEO_INFOS))
      for video_id in video_infos_a:
          self.assertEqual(
              video_infos_a[video_id], MOCK_VIDEO_INFOS[video_id]
          )
  
      self.assertEqual(len(video_frames_a), len(video_frames_a_copy))
      for video_id in video_frames_a:
          self.assertEqual(
              video_frames_a[video_id], video_frames_a_copy[video_id]
          )
  
      video_infos_b = MOCK_VIDEO_INFOS.copy()
      video_frames_b = video_frames_a_copy.copy()
  
      # Unmatched video info, should be removed
      video_infos_b["P07_001"] = VideoInfo(
          video_id="P07_001",
          resolution="720x1280",
          duration=17.001,
          fps=30,
      )
  
      # Unmatched video frame entry, should be removed
      video_frames_b["P07_002"]: VideoFrameInfo(
          min_frame_number=1,
          max_frame_number=1530,
          frame_string_length=8,
      )
  
      # Video info that defines approximately 6000 frames with 600 present from frame manifest
      # Should be dropped
      video_frames_b["P08_001"]: VideoFrameInfo(
          min_frame_number=1,
          max_frame_number=600,
          frame_string_length=8,
      )
  
      video_infos_b["P08_001"] = VideoInfo(
          video_id="P08_001",
          resolution="720x1280",
          duration=100,
          fps=60,
      )
  
      VideoDataset._remove_video_info_missing_or_incomplete_videos(
          video_frames_b, video_infos_b
      )
  
      # All newly added fields should be removed
      self.assertEqual(len(video_infos_b), len(MOCK_VIDEO_INFOS))
      for video_id in video_infos_b:
          self.assertEqual(
              video_infos_b[video_id], MOCK_VIDEO_INFOS[video_id]
          )
  
      self.assertEqual(len(video_frames_b), len(video_frames_a_copy))
      for video_id in video_frames_b:
          self.assertEqual(
              video_frames_b[video_id], video_frames_a_copy[video_id]
          )
  
file_path: pytorchvideo/tests/test_data_dataset_manifest_utils.py
imports: import unittest
  import unittest.mock
  from pytorchvideo.data.dataset_manifest_utils import EncodedVideoInfo, VideoDataset, VideoFrameInfo, VideoInfo
  from utils import get_flat_video_frames, MOCK_VIDEO_IDS, MOCK_VIDEO_INFOS
label_desc: Use image node_id 5 for calling the TestDatasetManifestUtils obj's underlying member method code with example usage: obj.test_remove_video_info_missing_or_incomplete_videos() without return types