code: def test_FunctionCall():
      fun = Function(transformScale)
      fun["scale"] = "1.0"
      fun2 = Function(transformZOffset)
  
      # No args
      assert_raises(TypeError, fun)  # need 1 arg
      assert_raises(TypeError, fun, 1, 2)  # need 1 arg
      call = fun("x")
      # Test repr
      exp = call.expression({fun: "y"})
      assert_equal(exp, "y(x)")
      # Test sig
      assert len(call._args) == 1
      # Test dependencies
      assert_in(fun, call.dependencies())
      assert_in(call._args[0], call.dependencies())
  
      # More args
      call = fun(fun2("foo"))
      # Test repr
      exp = call.expression({fun: "y", fun2: "z"})
      assert_in("y(z(", exp)
      # Test sig
      assert len(call._args) == 1
      call2 = call._args[0]
      assert len(call2._args) == 1
      # Test dependencies
      assert_in(fun, call.dependencies())
      assert_in(call._args[0], call.dependencies())
      assert_in(fun2, call.dependencies())
      assert_in(call2._args[0], call.dependencies())
  
file_path: vispy/vispy/visuals/shaders/tests/test_function.py
imports: from vispy.visuals.shaders import Function, MainFunction, Variable, Varying, FunctionChain, StatementList
  from vispy.visuals.shaders.expression import FunctionCall, TextExpression
  from vispy.testing import assert_in, assert_not_in, assert_is, run_tests_if_main, assert_raises, assert_equal
label_desc: Use image node_id 4 for calling a global function with example usage: test_FunctionCall() without return types