code: def test_negative_n_iter_no_change(make_whas500):
      whas500_data = make_whas500(with_std=False, to_numeric=True)
  
      clf = GradientBoostingSurvivalAnalysis()
      msg = (
          "The 'n_iter_no_change' parameter of GradientBoostingSurvivalAnalysis must be an int in the range "
          r"\[1, inf\) or None\. Got -1 instead\."
      )
  
      clf.set_params(n_iter_no_change=-1)
      with pytest.raises(ValueError, match=msg):
          clf.fit(whas500_data.x, whas500_data.y)
  
imports: from contextlib import nullcontext
  from os.path import dirname, join
  import numpy
  from numpy.testing import assert_array_almost_equal, assert_array_equal
  import pandas
  import pytest
  from sklearn.metrics import mean_squared_error
  from sksurv.column import categorical_to_numeric, standardize
  from sksurv.datasets import load_whas500
  from sksurv.ensemble import ComponentwiseGradientBoostingSurvivalAnalysis, GradientBoostingSurvivalAnalysis
  from sksurv.testing import FixtureParameterFactory, assert_cindex_almost_equal
  from sksurv.util import Surv
label_desc: Use image node_id 13 for calling the TestGradientBoosting obj's underlying member method code with example usage: obj.test_negative_n_iter_no_change(make_whas500) without return types