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(); }
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(); }
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(); }