// This is called when a car's value changes, and moves the car void OnCarProductionChanged(object sender, PropertyValueChange <DateTime> e) { Car c = sender as Car; if (c == null) { return; } ProductionToCars[e.OldValue].Remove(c); _Add(c); }
//-------------------------------------------------------------------------------------------------- public void Set(PropertyInfo propertyInfo, Entity instance, object value = null) { // Note: Only the first value change should be saved, or the original state will be lost. var change = _ChangeList.FirstOrDefault(pvc => pvc.IsEqual(propertyInfo)); if (change != null) { return; } change = new PropertyValueChange(propertyInfo); change.Update(instance, value); _ChangeList.Add(change); }
/// <summary> /// Caches the supplied item in the active change tracking service. /// </summary> /// <typeparam name="T">The system type of the item to cache.</typeparam> /// <param name="propertyName">Name of the property.</param> /// <param name="value">The value to cache.</param> /// <param name="restore">A delegate to call when the change tracking /// service needs to restore the cached change.</param> /// <param name="commit">A delegate to call when the change tracking /// service needs to commit the cached change. Passing a null item for /// this parameter means that this instance does not need to be notified when /// the change is committed.</param> /// <param name="direction">The direction.</param> /// <returns> /// A reference to the cached change as an instance of <see cref="IChange"/> interface. /// </returns> protected IChange CacheChange <T>(string propertyName, T value, RejectCallback <T> restore, CommitCallback <T> commit, AddChangeBehavior direction) { this.EnsureNotDisposed(); if (this.IsTracking) { IChange iChange = new PropertyValueChange <T>(this, propertyName, value, restore, commit, string.Empty); ((IMemento)this).Memento.Add(iChange, direction); return(iChange); } return(null); }
public void service_validate_a_valid_bookmark_is_true() { RejectCallback<String> cb = cv => { }; Object fakeOwner = new Object(); String change = String.Empty; IChange expected = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb ); ChangeTrackingService svc = new ChangeTrackingService(); svc.Add( expected, AddChangeBehavior.RedoRequest ); var bmk = svc.CreateBookmark(); Assert.IsTrue( svc.Validate( bmk ) ); }
public void service_after_add_getChangeSet_return_valid_cSet() { RejectCallback<String> cb = cv => { }; Object fakeOwner = new Object(); String change = String.Empty; IChange expected = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb ); ChangeTrackingService svc = new ChangeTrackingService(); svc.Add( expected, AddChangeBehavior.RedoRequest ); IChangeSet cSet = svc.GetChangeSet(); Assert.AreEqual<IChange>( expected, cSet.First() ); }
public void service_after_add_isChanged_is_true() { RejectCallback<String> cb = cv => { }; Object fakeOwner = new Object(); String change = String.Empty; PropertyValueChange<String> stub = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb ); ChangeTrackingService svc = new ChangeTrackingService(); svc.Add( stub, AddChangeBehavior.RedoRequest ); Assert.IsTrue( svc.IsChanged ); }
public void after_suspend_no_more_changes_can_be_added() { RejectCallback<String> cb = cv => { }; Object fakeOwner = new Object(); String change = String.Empty; PropertyValueChange<String> stub = new PropertyValueChange<string>( fakeOwner, "property-name", change, cb ); ChangeTrackingService svc = new ChangeTrackingService(); svc.Suspend(); svc.Add( stub, AddChangeBehavior.RedoRequest ); }
public void service_on_dispose_with_changes() { RejectCallback<String> rc = e => { }; CommitCallback<String> cc = e => { }; Object fakeOwner = new Object(); String change = "Foo"; var iChange = new PropertyValueChange<String>( fakeOwner, "property-name", change, rc, cc, "" ); using( ChangeTrackingService svc = new ChangeTrackingService() ) { svc.Add( iChange, AddChangeBehavior.Default ); } }
public void service_on_change_commit_remove_change_from_changesStack() { RejectCallback<String> rc = e => { }; CommitCallback<String> cc = e => { }; Object fakeOwner = new Object(); String change = "Foo"; var iChange = new PropertyValueChange<String>( fakeOwner, "property-name", change, rc, cc, "" ); ChangeTrackingService svc = new ChangeTrackingService(); svc.Add( iChange, AddChangeBehavior.Default ); iChange.Commit( CommitReason.AcceptChanges ); svc.IsChanged.Should().Be.False(); }