def METHOD_NAME(t, df, ibis_func, dask_func):
    dtype = dt.Decimal(12, 3)
    result = ibis_func(t.float64_as_strings.cast(dtype)).compile()
    context = decimal.Context(prec=dtype.precision)
    expected = df.float64_as_strings.apply(
        lambda x: context.create_decimal(x).quantize(
            decimal.Decimal(
                f"{'0' * (dtype.precision - dtype.scale)}.{'0' * dtype.scale}"
            )
        ),
        meta=("float64_as_strings", "object"),
    ).apply(dask_func, meta=("float64_as_strings", "object"))
    # dask.dataframe.Series doesn't do direct item assignment
    # TODO - maybe use .where instead
    computed_result = result.compute().reset_index(drop=True)
    computed_result[computed_result.apply(math.isnan)] = -99999
    computed_expected = expected.compute().reset_index(drop=True)
    computed_expected[computed_expected.apply(math.isnan)] = -99999
    # result[result.apply(math.isnan)] = -99999
    # expected[expected.apply(math.isnan)] = -99999
    tm.assert_series_equal(computed_result, computed_expected)