in rd-net/Test.Lifetimes/Lifetimes/LifetimeTest.cs [618:703]
public void TestTryBracketCanceled()
{
var log = 0;
void Inner(Action action)
{
log = 0;
def.Terminate();
action();
Assert.AreEqual(0, log);
def.Terminate();
Assert.AreEqual(0, log);
}
//Action + Action
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; },
() => { log += 10; }
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; },
() => { log += 10; },
true
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
//Func<T> + Action
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1;
return 1;
},
() => { log += 10; }
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; return 1;},
() => { log += 10; },
true
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
//Func<T> + Action<T>
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1;
return 1;
},
x => { log += x; }
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
Inner(() =>
{
var res = lt.TryBracket(() => { log += 1; return 1;},
x => { log += x; },
true
);
Assert.True(res.Canceled);
Assert.True(res.Exception is LifetimeCanceledException lce && lce.Lifetime == lt);
});
}