class_docstr: Test the correctness of optional parameters of `self._save`
docstr: channels_first swaps axes
docstr_tok: ["channels_first","swaps","axes"]
code: def test_save_channels_first(self, channels_first):
      """channels_first swaps axes"""
      path = self.get_temp_path("data.wav")
      data = get_wav_data(
          "int16", 2, channels_first=channels_first, normalize=False
      )
      self._save(path, data, 8000, channels_first=channels_first)
      found = load_wav(path, normalize=False)[0]
      expected = data if channels_first else data.transpose(1, 0)
      self.assertEqual(found, expected)
  
imports: import io
  import os
  from functools import partial
  import torch
  from parameterized import parameterized
  from torchaudio._backend.utils import get_save_func
  from torchaudio_unittest.common_utils import get_wav_data, load_wav, nested_params, PytorchTestCase, save_wav, skipIfNoExec, skipIfNoSox, skipIfNoSoxEncoder, sox_utils, TempDirMixin, TorchaudioTestCase
  from .common import get_enc_params, name_func
label_desc: Use image node_id 1 for calling the TestSaveParams obj's underlying member method code with example usage: obj.test_save_channels_first(channels_first) without return types