Пример #1
0
        public async Task ScopedStateMonadShouldDisposeVariablesThatItRemoves()
        {
            var repo = new MockRepository(MockBehavior.Strict);

            var sd = repo.Create <IDoubleDisposable>();

            var monad1 = CreateMonad(repo);

            var scopedMonad = new ScopedStateMonad(
                monad1,
                ImmutableDictionary <VariableName, object> .Empty
                );

            sd.Setup(x => x.DisposeAsync(scopedMonad)).Returns(Task.CompletedTask);
            sd.Setup(x => x.Dispose());

            await scopedMonad.SetVariableAsync(new VariableName("V"), sd.Object, false, null);

            await scopedMonad.RemoveVariableAsync(new VariableName("V"), true, null);

            repo.VerifyAll();
        }
Пример #2
0
        public async Task ScopedStateMonadShouldDisposeVariablesWhenItIsDisposed()
        {
            var repo = new MockRepository(MockBehavior.Strict);

            var sd = repo.Create <IDoubleDisposable>();

            var monad1 = CreateMonad(repo);

            var scopedMonad = new ScopedStateMonad(
                monad1,
                ImmutableDictionary <VariableName, object> .Empty
                );

            // ReSharper disable once AccessToDisposedClosure
            sd.Setup(x => x.DisposeAsync(scopedMonad)).Returns(Task.CompletedTask);
            sd.Setup(x => x.Dispose());

            await scopedMonad.SetVariableAsync(new VariableName("V"), sd.Object, false, null);

            await scopedMonad.DisposeAsync();

            repo.VerifyAll();
        }