public void ShouldCallDispose() { TrackingDisposable disposable = new TrackingDisposable(); ConstantExpression disposableEx = Expression.Constant(disposable); disposable.HasBeenDisposed.ShouldBeFalse(); Expression .Lambda <Action>(X.Using(disposableEx, Expression.Empty())) .Compile()(); disposable.HasBeenDisposed.ShouldBeTrue(); }
public void ShouldCallDisposeAfterException() { TrackingDisposable disposable = new TrackingDisposable(); ConstantExpression disposableEx = Expression.Constant(disposable); ConstantExpression exceptionEx = Expression.Constant(new Exception()); disposable.HasBeenDisposed.ShouldBeFalse(); Should.Throw <Exception>(() => Expression .Lambda <Action>(X.Using(disposableEx, Expression.Throw(exceptionEx))) .Compile()()); disposable.HasBeenDisposed.ShouldBeTrue(); }