public void AssigningAValueInAMapUpdatesTheParent() { var mapReference = new ValueReferenceDefinitionBuilder() .WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine); var map = mapReference.ValueAsMap(); int watchListenerCalled = 0; mapReference.Watch(updatedMap => { watchListenerCalled++; }); map["foo"].Set(BigDouble.One); Assert.AreEqual(3, watchListenerCalled); }
public void WatchListenerReceivesMapValueWhenChildUpdates() { var mapReference = new ValueReferenceDefinitionBuilder() .WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine); var map = mapReference.ValueAsMap(); int watchListenerCalled = 0; mapReference.Watch(updatedMap => { Assert.IsNotNull(updatedMap as IDictionary <string, ValueReference>); watchListenerCalled++; }); map["foo"].Set(BigDouble.One); Assert.AreEqual(3, watchListenerCalled); }
public void ChangingValueOfWatchedValueNotifiesListeners() { var valueReference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine); int calls = 0; valueReference.Watch(newValue => { calls++; if (calls == 1) { Assert.AreEqual(BigDouble.Zero, newValue); } else { Assert.AreEqual(BigDouble.One, newValue); } }); valueReference.Set(BigDouble.One); Assert.AreEqual(2, calls); }
public void WatchingForChangesReceivesCurrentValueImmediately() { var valueReference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine); valueReference.Watch(newValue => Assert.AreEqual(BigDouble.Zero, newValue)); }