コード例 #1
0
        public void NoReactivationDuringModification()
        {
            var activation = "";

            var atom = Atom.Value(
                1,
                callbacks: new ActionAtomCallbacks(
                    onActive: () => activation   += "A",
                    onInactive: () => activation += "D"
                    )
                );

            Assert.AreEqual("", activation);

            var autoRun = Atom.Reaction(() => atom.Get());

            Assert.AreEqual("A", activation);

            atom.Value = 2;
            Assert.AreEqual("A", activation);

            AtomScheduler.Sync();
            Assert.AreEqual("A", activation);

            autoRun.Deactivate();
        }
コード例 #2
0
        public void ObsoleteAtomsActualizedInInitialOrder()
        {
            var actualization = "";

            var source = Atom.Value(1);
            var middle = Atom.Computed(() =>
            {
                actualization += "M";
                return(source.Value);
            });
            var target = Atom.Computed(() =>
            {
                actualization += "T";
                source.Get();
                return(middle.Value);
            });

            var autoRun = Atom.Reaction(() => target.Get());

            Assert.AreEqual("TM", actualization);

            source.Value = 2;

            AtomScheduler.Sync();
            Assert.AreEqual("TMTM", actualization);

            autoRun.Deactivate();
        }
コード例 #3
0
        public void NoReactivationDuringPulling()
        {
            var activation = "";

            var activationSource = Atom.Computed(
                pull: () => 1,
                callbacks: new ActionAtomCallbacks(
                    onActive: () => activation   += "A",
                    onInactive: () => activation += "D"
                    )
                );

            var modifiedSource = Atom.Value(1);
            var listener       = Atom.Computed(() => activationSource.Value + modifiedSource.Value);

            Assert.AreEqual("", activation);

            var autoRun = Atom.Reaction(() => listener.Get());

            Assert.AreEqual("A", activation);

            modifiedSource.Value = 2;
            Assert.AreEqual("A", activation);

            AtomScheduler.Sync();
            Assert.AreEqual("A", activation);

            autoRun.Deactivate();
        }