in rd-net/Test.Lifetimes/Lifetimes/LifetimeTest.cs [707:779]
public void TestTryBracketBadOpeningWrap()
{
var log = 0;
void Inner(Action action)
{
log = 0;
def = new LifetimeDefinition();
action();
Assert.AreEqual(1, log);
def.Terminate();
Assert.AreEqual(1, log);
}
//Action + Action
Inner(() =>
{
Assert.Throws<FailureException>( () => lt.TryBracket(() => { log += 1; Fail(); },
() => { log += 10; }
));
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; Fail(); },
() => { log += 10; },
true
);
Assert.True(res.FailedNotCanceled);
Assert.True(res.Exception is FailureException);
});
//Func<T> + Action
Inner(() =>
{
Assert.Throws<FailureException>( () => lt.TryBracket(() => { log += 1; return Fail<int>(); },
() => { log += 10; }
));
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; return Fail<int>(); },
() => { log += 10; },
true
);
Assert.True(res.FailedNotCanceled);
Assert.True(res.Exception is FailureException);
});
//Func<T> + Action<T>
Inner(() =>
{
Assert.Throws<FailureException>(() => lt.TryBracket(() => { log += 1;
return Fail<int>();
},
x => { log += x; }
));
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; return Fail<int>(); },
x => { log += x; },
true
);
Assert.True(res.FailedNotCanceled);
Assert.True(res.Exception is FailureException);
});
}