code: def test_cases(self):
      for constrained in self.constrained_cases:
          if type(constrained) is list:
              cov = np.eye(constrained[0].shape[0])
          else:
              cov = np.eye(constrained.shape[0])
          unconstrained, _ = tools.unconstrain_stationary_multivariate(
              constrained, cov
          )  # noqa:E501
          reconstrained, _ = tools.constrain_stationary_multivariate(
              unconstrained, cov
          )  # noqa:E501
          assert_allclose(reconstrained, constrained)
  
      for unconstrained in self.unconstrained_cases:
          if type(unconstrained) is list:
              cov = np.eye(unconstrained[0].shape[0])
          else:
              cov = np.eye(unconstrained.shape[0])
          constrained, _ = tools.constrain_stationary_multivariate(
              unconstrained, cov
          )  # noqa:E501
          (
              reunconstrained,
              _,
          ) = tools.unconstrain_stationary_multivariate(
              constrained, cov
          )  # noqa:E501
          # Note: low tolerance comes from last example in
          # unconstrained_cases, but is not a real problem
          assert_allclose(reunconstrained, unconstrained, atol=1e-4)
  
imports: import pytest
  import numpy
  from numpy.testing import assert_allclose, assert_equal, assert_array_less, assert_array_equal, assert_almost_equal
  import pandas
  from scipy.linalg import solve_discrete_lyapunov
  from statsmodels.tsa.statespace import tools
  from statsmodels.tsa.stattools import acovf
label_desc: Use image node_id 1 for calling the TestStationaryMultivariate obj's underlying member method code with example usage: obj.test_cases() without return types