public void ValueDisposal() { var people = new ObservableCollection <SyncDisposableTestPerson> { SyncDisposableTestPerson.CreateJohn() }; SyncDisposableTestPerson?newPerson; using (var expr = ActiveExpression.Create(p => - p[0], people)) { newPerson = expr.Value; Assert.IsFalse(newPerson !.IsDisposed); people[0] = SyncDisposableTestPerson.CreateJohn(); Assert.IsTrue(newPerson.IsDisposed); newPerson = expr.Value; Assert.IsFalse(newPerson !.IsDisposed); } Assert.IsTrue(newPerson.IsDisposed); }
public void ValueDisposal() { var john = SyncDisposableTestPerson.CreateJohn(); var options = new ActiveExpressionOptions(); options.AddConstructedTypeDisposal(typeof(SyncDisposableTestPerson)); SyncDisposableTestPerson?first, second; using (var expr = ActiveExpression.Create(() => new SyncDisposableTestPerson(john.Name !.Length.ToString()), options)) { Assert.IsNull(expr.Fault); first = expr.Value; Assert.IsFalse(first !.IsDisposed); john.Name = string.Empty; Assert.IsNull(expr.Fault); second = expr.Value; Assert.IsFalse(second !.IsDisposed); Assert.IsTrue(first.IsDisposed); } Assert.IsTrue(second.IsDisposed); }
public void ValueDisposal() { var john = SyncDisposableTestPerson.CreateJohn(); var emily = SyncDisposableTestPerson.CreateEmily(); var options = new ActiveExpressionOptions(); options.AddExpressionValueDisposal(() => CombineSyncDisposablePeople(null !, null !)); SyncDisposableTestPerson?first, second; using (var expr = ActiveExpression.Create(() => CombineSyncDisposablePeople(john.Name !.Length > 3 ? john : emily, emily), options)) { Assert.IsNull(expr.Fault); first = expr.Value; Assert.IsFalse(first !.IsDisposed); john.Name = string.Empty; Assert.IsNull(expr.Fault); second = expr.Value; Assert.IsFalse(second !.IsDisposed); Assert.IsTrue(first.IsDisposed); } Assert.IsTrue(second.IsDisposed); }
static SyncDisposableTestPerson CombineSyncDisposablePeople(SyncDisposableTestPerson a, SyncDisposableTestPerson b) => new SyncDisposableTestPerson { Name = $"{a.Name} {b.Name}" };