code: def test_constant(self):
      r1, r2, r5 = MyVariable(1), MyVariable(2), MyVariable(5)
      node = MyOp.make_node(MyOp.make_node(r1, r2).outputs[0], r5)
      _, new = clone([r1, r2, r5], node.outputs, False)
      new_node = new[0].owner
      new_node.inputs = MyVariable(7), MyVariable(8)
      c1 = tensor.constant(1.5)
  
      i, o = clone([c1], [c1])
      assert i[0] is not c1 and o[0] is not c1
  
      i, o = clone([c1], [c1], False)
      assert i[0] is c1 and o[0] is c1
  
      i, o = clone([c1], [c1], True, False)
      assert i[0] is not c1 and o[0] is not c1
  
      i, o = clone([c1], [c1], False, True)
      assert i[0] is c1 and o[0] is c1
  
imports: from __future__ import absolute_import, print_function, division
  from itertools import count
  import pickle
  import unittest
  from nose.plugins.skip import SkipTest
  import numpy
  from theano import sparse, shared, tensor
  from theano.gof.graph import Apply, as_string, clone, general_toposort, inputs, io_toposort, is_same_graph, Variable
  from theano.gof.op import Op
  from theano.gof.type import Type
label_desc: Use image node_id 4 for calling the TestClone obj's underlying member method code with example usage: obj.test_constant() without return types