def METHOD_NAME(par):
    """Dot-test and inversion for CausalIntegration operator for 1d signals"""
    t = np.arange(par["nt"]) * par["dt"]
    x = t + par["imag"] * t
    for kind, rf in itertools.product(("full", "half", "trapezoidal"), (False, True)):
        Cop = CausalIntegration(
            par["nt"],
            sampling=par["dt"],
            kind=kind,
            removefirst=rf,
            dtype=par["dtype"],
        )
        rf1 = 1 if rf else 0
        assert dottest(
            Cop, par["nt"] - rf1, par["nt"], complexflag=0 if par["imag"] == 0 else 3
        )
        # test analytical integration and derivative inversion only for
        # cases where a zero c is required
        if kind != "full" and not rf:
            # numerical integration
            y = Cop * x
            # analytical integration
            yana = (
                t**2 / 2.0
                - t[0] ** 2 / 2.0
                + par["imag"] * (t**2 / 2.0 - t[0] ** 2 / 2.0)
            )
            assert_array_almost_equal(y, yana[rf1:], decimal=4)
            # numerical derivative
            Dop = FirstDerivative(
                par["nt"] - rf1, sampling=par["dt"], dtype=par["dtype"]
            )
            xder = Dop * y.ravel()
            # derivative by inversion
            xinv = Cop / y
            assert_array_almost_equal(x[:-1], xder[:-1], decimal=4)
            assert_array_almost_equal(x, xinv, decimal=4)