def METHOD_NAME(self):
    # value based tests of jacobian and dfdp
    parameters = [3.8, 0.035, 0.15, 7.5]
    iparameters = [4.5, 4.0, 0.04]
    m0 = 7
    model = pints.toy.Hes1Model(m0=m0, fixed_parameters=iparameters)
    times = model.suggested_times()
    state = [4.0, 3.0, 3.5]
    jacobian = model.jacobian(state, 0.0, parameters)
    self.assertEqual(jacobian[0, 0], -0.04)
    self.assertEqual(jacobian[0, 1], 0.0)
    self.assertAlmostEqual(jacobian[0, 2], -0.48782911794811024)
    self.assertEqual(jacobian[1, 0], 0.035)
    self.assertEqual(jacobian[1, 1], -0.19)
    self.assertEqual(jacobian[1, 2], 0.0)
    self.assertEqual(jacobian[2, 0], 0.0)
    self.assertEqual(jacobian[2, 1], 0.15)
    self.assertEqual(jacobian[2, 2], -0.04)
    dfdp = model._dfdp(state, 0.0, parameters)
    self.assertAlmostEqual(dfdp[0, 0], 0.4493162928469437)
    self.assertEqual(dfdp[0, 1], 0)
    self.assertEqual(dfdp[0, 2], 0)
    self.assertAlmostEqual(dfdp[0, 3], 0.018721798164847005)
    self.assertEqual(dfdp[1, 0], 0)
    self.assertEqual(dfdp[1, 1], 4)
    self.assertEqual(dfdp[1, 2], -3)
    self.assertEqual(dfdp[1, 3], 0)
    self.assertEqual(dfdp[2, 0], 0)
    self.assertEqual(dfdp[2, 1], 0)
    self.assertEqual(dfdp[2, 2], 3)
    self.assertEqual(dfdp[2, 3], 0)
    values = model.simulate(parameters, times)
    values1, dvals = model.simulateS1(parameters, times)
    self.assertTrue(np.array_equal(values.shape, [len(times), ]))
    self.assertTrue(np.array_equal(values1.shape, [len(times), ]))
    self.assertTrue(
        np.array_equal(dvals.shape,
                       np.array([len(times),
                                model.n_outputs(), model.n_parameters()])))
    self.assertEqual(dvals[0][0, 0], 0.0)
    self.assertAlmostEqual(dvals[1][0, 0], 2.029494068269803)
    self.assertAlmostEqual(dvals[2][0, 1], -197.7831610097427)
    self.assertAlmostEqual(dvals[2][0, 2], -10.15634595324204)
    self.assertAlmostEqual(dvals[3][0, 3], -0.4269233678552582)