code: def test_DDM_hstack():
      A = DDM([[ZZ(1), ZZ(2), ZZ(3)]], (1, 3), ZZ)
      B = DDM([[ZZ(4), ZZ(5)]], (1, 2), ZZ)
      C = DDM([[ZZ(6)]], (1, 1), ZZ)
  
      Ah = A.hstack(B)
      assert Ah.shape == (1, 5)
      assert Ah.domain == ZZ
      assert Ah == DDM(
          [[ZZ(1), ZZ(2), ZZ(3), ZZ(4), ZZ(5)]], (1, 5), ZZ
      )
  
      Ah = A.hstack(B, C)
      assert Ah.shape == (1, 6)
      assert Ah.domain == ZZ
      assert Ah == DDM(
          [[ZZ(1), ZZ(2), ZZ(3), ZZ(4), ZZ(5), ZZ(6)]], (1, 6), ZZ
      )
  
imports: from sympy.testing.pytest import raises
  from sympy.external.gmpy import GROUND_TYPES
  from sympy.polys import ZZ, QQ
  from sympy.polys.matrices.ddm import DDM
  from sympy.polys.matrices.exceptions import DMShapeError, DMNonInvertibleMatrixError, DMDomainError, DMBadInputError
label_desc: Use image node_id 16 for calling a global function with example usage: test_DDM_hstack() without return types