code: def test_op_combine(
      left_operand,
      right_operand,
      operations,
      expected_results,
      device_id,
      precision,
  ):
      dt = PRECISION_TO_TYPE[precision]
  
      from .. import combine
  
      left_value = AA(left_operand, dtype=dt)
      right_value = AA(right_operand, dtype=dt)
  
      a = C.input_variable(
          shape=left_value.shape,
          dtype=sanitize_dtype_cntk(precision),
          needs_gradient=True,
          name="a",
      )
  
      b = C.input_variable(
          shape=right_value.shape,
          dtype=sanitize_dtype_cntk(precision),
          needs_gradient=True,
          name="b",
      )
  
      left_value.shape = (1, 1) + left_value.shape
      right_value.shape = (1, 1) + right_value.shape
  
      forward_input = {a: left_value, b: right_value}
  
      combine_list = []
      for op in operations:
          combine_list.append(op(a, b))
  
      combine_node = combine(combine_list)
  
      expected_forward_results = [
          np.asarray([[i]], dtype=dt) for i in expected_results
      ]
  
      forward_results, _ = cntk_eval(
          combine_node, forward_input, precision, cntk_device(device_id)
      )
  
      results = list(forward_results.values())
  
      assert compare_lists_of_np_arrays(
          results, expected_forward_results
      )
  
file_path: CNTK/bindings/python/cntk/ops/tests/combine_test.py
imports: from __future__ import division
  import numpy
  import pytest
  import cntk
  from .ops_test_utils import AA, precision, PRECISION_TO_TYPE, compare_lists_of_np_arrays, cntk_device
  from cntk.internal.utils import eval
  from cntk.internal import sanitize_dtype_cntk
  from ..None import plus, minus
  from cntk.losses import cross_entropy_with_softmax
  from cntk.metrics import classification_error
label_desc: Use image node_id 1 for calling a global function with example usage: test_op_combine(left_operand, right_operand, operations, expected_results, device_id, precision) without return types