code: def test_combine_op_as_block():
      # We test using combine as the operation that is encapsulated in a block
      from .. import combine, placeholder, as_block
  
      f = combine([placeholder()])
      f = as_block(f, [(f.placeholders[0], placeholder())], "id")
  
      x = placeholder()
      y = placeholder()
  
      x = f.clone("share", {f.placeholders[0]: x})
      z = x - y
  
      # connect to inputs
      z.replace_placeholders(
          {
              z.placeholders[0]: C.input_variable(1),
              z.placeholders[1]: C.input_variable(1),
          }
      )
  
      # evaluate
      res = z.eval({z.arguments[0]: [[5.0]], z.arguments[1]: [[3.0]]})
  
      expected_forward = [[2.0]]
      assert np.array_equal(res, expected_forward)
  
file_path: CNTK/bindings/python/cntk/ops/tests/block_test.py
imports: from __future__ import division
  import numpy
  import pytest
  from .ops_test_utils import unittest_helper, _test_unary_op, _test_binary_op, AA, precision, PRECISION_TO_TYPE, cntk_device
  import cntk
  from cntk.axis import Axis
  from cntk.internal import sanitize_dtype_cntk
  from ..None import constant
label_desc: Use image node_id 2 for calling a global function with example usage: test_combine_op_as_block() without return types