def METHOD_NAME(backend_class, update_thd, substeps):
    """asserting that condensation modifies env thd and water_vapour_mixing_ratio only,
    not rhod"""
    # arrange
    builder = Builder(n_sd=10, backend=backend_class())
    builder.set_environment(
        Parcel(
            dt=1 * si.s,
            mass_of_dry_air=1 * si.mg,
            p0=1000 * si.hPa,
            initial_water_vapour_mixing_ratio=22.2 * si.g / si.kg,
            T0=300 * si.K,
            w=1 * si.m / si.s,
        )
    )
    builder.add_dynamic(AmbientThermodynamics())
    builder.add_dynamic(
        Condensation(
            update_thd=update_thd,
            substeps=substeps,
            adaptive=False,
        )
    )
    particulator = builder.build(
        products=(),
        attributes=builder.particulator.environment.init_attributes(
            kappa=1, r_dry=0.25 * si.um, n_in_dv=1000
        ),
    )
    particulator.dynamics["AmbientThermodynamics"]()
    cell_id = 0
    env = particulator.environment
    pred_rhod_old = env.get_predicted("rhod")[cell_id]
    pred_thd_old = env.get_predicted("thd")[cell_id]
    pred_water_vapour_mixing_ratio_old = env.get_predicted(
        "water_vapour_mixing_ratio"
    )[cell_id]
    env_rhod_old = env["rhod"][cell_id]
    env_thd_old = env["thd"][cell_id]
    env_water_vapour_mixing_ratio_old = env["water_vapour_mixing_ratio"][cell_id]
    # act
    particulator.dynamics["Condensation"]()
    # assert
    assert env_rhod_old == env["rhod"]
    assert env_water_vapour_mixing_ratio_old == env["water_vapour_mixing_ratio"]
    assert env_thd_old == env["thd"]
    assert pred_rhod_old == env.get_predicted("rhod")[cell_id]
    assert (
        pred_water_vapour_mixing_ratio_old
        != env.get_predicted("water_vapour_mixing_ratio")[cell_id]
    )
    if update_thd:
        assert pred_thd_old != env.get_predicted("thd")[cell_id]
    else:
        assert pred_thd_old == env.get_predicted("thd")[cell_id]