code: def test_ad_hoc_cov(tmp_path):
      """Test ad hoc cov creation and I/O."""
      out_fname = tmp_path / "test-cov.fif"
      evoked = read_evokeds(ave_fname)[0]
      cov = make_ad_hoc_cov(evoked.info)
      cov.save(out_fname)
      assert "Covariance" in repr(cov)
      cov2 = read_cov(out_fname)
      assert_array_almost_equal(cov["data"], cov2["data"])
      std = dict(grad=2e-13, mag=10e-15, eeg=0.1e-6)
      cov = make_ad_hoc_cov(evoked.info, std)
      cov.save(out_fname, overwrite=True)
      assert "Covariance" in repr(cov)
      cov2 = read_cov(out_fname)
      assert_array_almost_equal(cov["data"], cov2["data"])
      cov["data"] = np.diag(cov["data"])
      with pytest.raises(RuntimeError, match="attributes inconsistent"):
          cov._get_square()
      cov["diag"] = False
      cov._get_square()
      cov["data"] = np.diag(cov["data"])
      with pytest.raises(RuntimeError, match="attributes inconsistent"):
          cov._get_square()
  
imports: import itertools
  import sys
  from inspect import signature
  from pathlib import Path
  import numpy
  import pytest
  from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal
  from mne import Epochs, compute_covariance, compute_proj_raw, compute_rank, compute_raw_covariance, create_info, find_events, make_ad_hoc_cov, make_fixed_length_events, merge_events, pick_channels_cov, pick_info, pick_types, read_cov, read_evokeds, write_cov
  from mne._fiff.pick import _DATA_CH_TYPES_SPLIT
  from mne.channels import equalize_channels
  from mne.cov import _auto_low_rank_model, _regularized_covariance, compute_whitener, prepare_noise_cov, regularize, whiten_evoked
  from mne.datasets import testing
  from mne.fixes import _safe_svd
  from mne.io import RawArray, read_info, read_raw_ctf, read_raw_fif
  from mne.preprocessing import maxwell_filter
  from mne.rank import _compute_rank_int
  from mne.utils import _record_warnings, assert_snr, catch_logging
label_desc: Use image node_id 5 for calling a global function with example usage: test_ad_hoc_cov(tmp_path) without return types