code: def test_idctn_vs_2d_reference(self, funcn, func, dct_type, norm):
      fdata = dctn(self.data, type=dct_type, norm=norm)
      y1 = funcn(fdata, type=dct_type, norm=norm)
      y2 = ref_2d(func, fdata, type=dct_type, norm=norm)
      assert_array_almost_equal(y1, y2, decimal=11)
  
imports: from os.path import join, dirname
  from typing import Callable, Dict, Tuple, Union, Type
  import numpy
  from numpy.testing import assert_array_almost_equal, assert_equal, assert_allclose
  import pytest
  from pytest import raises
  from scipy.fft._pocketfft.realtransforms import dct, idct, dst, idst, dctn, idctn, dstn, idstn
label_desc: Use image node_id 3 for calling the Test_DCTN_IDCTN obj's underlying member method code with example usage: obj.test_idctn_vs_2d_reference(funcn, func, dct_type, norm) without return types