rebo / atomic_hooks

4 stars 6 forks source link

Reaction output not updated after global_reverse_queue().travel_backwards(); #8

Open arn-the-long-beard opened 4 years ago

arn-the-long-beard commented 4 years ago

This unit test is failing on the reaction getter while the atom value is correct

 #[test]
    fn test_reversible_reaction() {
        let a_b_reversible_subtraction = a_b_reversible_subtraction();
        a_reversible().set(0);
        b_reversible().set(0);
        a_reversible().update(|state| *state = 40);
        assert_eq!(a_reversible().get(), 40, "We should get 40 as value for a");
        assert_eq!(
            a_b_reversible_subtraction.get(),
            40,
            "We should get 40 for subtraction because setting"
        );

        global_reverse_queue().travel_backwards();

        assert_eq!(
            a_reversible().get(),
            0,
            "We should get 0 on a because back in time"
        );

        assert_eq!(
            a_b_reversible_subtraction.get(),
            0,
            "We should get 0 as result for subtraction because back in time"
        );

        b_reversible().inert_set(0);
        assert_eq!(
            a_b_reversible_subtraction.get(),
            0,
            "We should get 0 for subtraction because setting inert"
        );
        a_reversible().set(20);
        assert_eq!(
            a_b_reversible_subtraction.get(),
            20,
            "We should get 20 for subtraction because setting"
        );
    }

I do not understand the code under the atomic/reaction level. What do you think can cause the reaction to not update its value correctly ?