code: def test_DDM_eq():
      items = [[ZZ(0), ZZ(1)], [ZZ(2), ZZ(3)]]
      ddm1 = DDM(items, (2, 2), ZZ)
      ddm2 = DDM(items, (2, 2), ZZ)
  
      assert (ddm1 == ddm1) is True
      assert (ddm1 == items) is False
      assert (items == ddm1) is False
      assert (ddm1 == ddm2) is True
      assert (ddm2 == ddm1) is True
  
      assert (ddm1 != ddm1) is False
      assert (ddm1 != items) is True
      assert (items != ddm1) is True
      assert (ddm1 != ddm2) is False
      assert (ddm2 != ddm1) is False
  
      ddm3 = DDM([[ZZ(0), ZZ(1)], [ZZ(3), ZZ(3)]], (2, 2), ZZ)
      ddm3 = DDM(items, (2, 2), QQ)
  
      assert (ddm1 == ddm3) is False
      assert (ddm3 == ddm1) is False
      assert (ddm1 != ddm3) is True
      assert (ddm3 != ddm1) is True
  
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 4 for calling a global function with example usage: test_DDM_eq() without return types