code: def testEqual(self):
      def run_test(x1, x2=None):
          if x2 is None:
              x2 = x1
          for fn1 in self.array_transforms:
              for fn2 in self.array_transforms:
                  arg1 = fn1(x1)
                  arg2 = fn2(x2)
                  self.match(
                      math_ops.equal(arg1, arg2),
                      np.equal(
                          make_numpy_compatible(arg1),
                          make_numpy_compatible(arg2),
                      ),
                  )
  
      run_test(1)
      run_test(1, 2)
      run_test([1, 2])
      run_test([1, 2, 3], [2])
      run_test([[1, 2], [3, 4]], [1, 2])
      run_test([[1, 2], [1, 4]], [1, 2])
      run_test([1, 2], [[1, 2], [1, 4]])
      run_test([[1, 2], [3, 4]], [[1, 2], [3, 4]])
      run_test([[1, 2], [3, 4]], [[1, 3], [3, 4]])
  
file_path: trax/trax/tf_numpy/numpy_impl/tests/logic_test.py
imports: import numpy
  import tensorflow.compat.v2
  from trax.tf_numpy.numpy_impl import array_ops
  from trax.tf_numpy.numpy_impl import arrays
  from trax.tf_numpy.numpy_impl import math_ops
label_desc: Use image node_id 2 for calling the LogicTest obj's underlying member method code with example usage: obj.testEqual() without return types