code: def test_io_annotation(
      dummy_annotation_file, tmp_path, fmt, ch_names
  ):
      """Test CSV, TXT, and FIF input/output (which support ch_names)."""
      annot = read_annotations(dummy_annotation_file)
      assert annot.orig_time == _ORIG_TIME
      kwargs = dict(orig_time=_ORIG_TIME)
      if ch_names:
          kwargs["ch_names"] = ((), ("MEG0111", "MEG2563"))
      _assert_annotations_equal(
          annot,
          Annotations([0.0, 9.0], [1.0, 2.425], ["AA", "BB"], **kwargs),
          tol=1e-6,
      )
  
      # Now test writing
      fname = tmp_path / f"annotations-annot.{fmt}"
      annot.save(fname)
      annot2 = read_annotations(fname)
      _assert_annotations_equal(annot, annot2)
  
      # Now without an orig_time
      annot._orig_time = None
      annot.save(fname, overwrite=True)
      annot2 = read_annotations(fname)
      _assert_annotations_equal(annot, annot2)
  
imports: import sys
  from collections import OrderedDict
  from datetime import datetime, timedelta, timezone
  from itertools import repeat
  from pathlib import Path
  import numpy
  import pytest
  from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal
  from pytest import approx
  import mne
  from mne import Annotations, Epochs, annotations_from_events, count_annotations, create_info, events_from_annotations, read_annotations
  from mne.annotations import _handle_meas_date, _read_annotations_txt_parse_header, _sync_onset
  from mne.datasets import testing
  from mne.io import RawArray, concatenate_raws, read_raw_fif
  from mne.utils import _dt_to_stamp, _raw_annot, _record_warnings, _stamp_to_dt, assert_and_remove_boundary_annot, catch_logging, check_version
label_desc: Use image node_id 24 for calling a global function with example usage: test_io_annotation(dummy_annotation_file, tmp_path, fmt, ch_names) without return types