code: def test_CRootOf_attributes():
      r = rootof(x**3 + x + 3, 0)
      assert r.is_number
      assert r.free_symbols == set()
      # if the following assertion fails then multivariate polynomials
      # are apparently supported and the RootOf.free_symbols routine
      # should be changed to return whatever symbols would not be
      # the PurePoly dummy symbol
      raises(
          NotImplementedError,
          lambda: rootof(Poly(x**3 + y * x + 1, x), 0),
      )
  
imports: from sympy.polys.polytools import Poly
  import sympy.polys.rootoftools
  from sympy.polys.rootoftools import rootof, RootOf, CRootOf, RootSum, _pure_key_dict
  from sympy.polys.polyerrors import MultivariatePolynomialError, GeneratorsNeeded, PolynomialError
  from sympy.core.function import Function, Lambda
  from sympy.core.numbers import Float, I, Rational
  from sympy.core.relational import Eq
  from sympy.core.singleton import S
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import tan
  from sympy.integrals.integrals import Integral
  from sympy.polys.orthopolys import legendre_poly
  from sympy.solvers.solvers import solve
  from sympy.testing.pytest import raises, slow
  from sympy.core.expr import unchanged
  from sympy.abc import a, b, x, y, z, r
label_desc: Use image node_id 2 for calling a global function with example usage: test_CRootOf_attributes() without return types