code: def test_fixed_limits(self):
      def func1(x0, x1, x2, x3):
          val = (
              x0**2
              + x1 * x2
              - x3**3
              + np.sin(x0)
              + (1 if (x0 - 0.2 * x3 - 0.5 - 0.25 * x1 > 0) else 0)
          )
          return val
  
      def opts_basic(*args):
          return {"points": [0.2 * args[2] + 0.5 + 0.25 * args[0]]}
  
      res = nquad(
          func1,
          [[0, 1], [-1, 1], [0.13, 0.8], [-0.15, 1]],
          opts=[opts_basic, {}, {}, {}],
          full_output=True,
      )
      assert_quad(res[:-1], 1.5267454070738635)
      assert_(res[-1]["neval"] > 0 and res[-1]["neval"] < 4e5)
  
imports: import sys
  import math
  import numpy
  from numpy import sqrt, cos, sin, arctan, exp, log, pi
  from numpy.testing import assert_, assert_allclose, assert_array_less, assert_almost_equal
  import pytest
  from scipy.integrate import quad, dblquad, tplquad, nquad
  from scipy.special import erf, erfc
  from scipy._lib._ccallback import LowLevelCallable
  import ctypes
  import ctypes.util
  from scipy._lib._ccallback_c import sine_ctypes
  import scipy.integrate._test_multivariate
label_desc: Use image node_id 1 for calling the TestNQuad obj's underlying member method code with example usage: obj.test_fixed_limits() and returns: val, dict