in rd-net/Test.Lifetimes/Lifetimes/LifetimeTest.cs [150:208]
public void TestEquals()
{
var oldValue = Lifetime.LogErrorIfLifetimeIsNotInitialized;
try
{
Lifetime.LogErrorIfLifetimeIsNotInitialized = false;
DoChecks(false);
Lifetime.LogErrorIfLifetimeIsNotInitialized = true;
DoChecks(true);
}
finally
{
Lifetime.LogErrorIfLifetimeIsNotInitialized = oldValue;
}
[SuppressMessage("ReSharper", "EqualExpressionComparison")]
#pragma warning disable 1718
void DoChecks(bool newDefaultBehaviorFlag)
{
Assert.AreEqual(Lifetime.LogErrorIfLifetimeIsNotInitialized, newDefaultBehaviorFlag);
Lifetime defaultLifetime = default;
// Checks that are always correct:
Assert.AreEqual(defaultLifetime, defaultLifetime);
Assert.AreEqual(Lifetime.Eternal, Lifetime.Eternal);
Assert.AreEqual(Lifetime.Terminated, Lifetime.Terminated);
Assert.AreNotEqual(Lifetime.Eternal, Lifetime.Terminated);
Assert.AreNotEqual(defaultLifetime, Lifetime.Terminated);
Assert.True(defaultLifetime == defaultLifetime);
Assert.True(Lifetime.Eternal == Lifetime.Eternal);
Assert.True(Lifetime.Terminated == Lifetime.Terminated);
Assert.False(Lifetime.Eternal == Lifetime.Terminated);
Assert.False(defaultLifetime == Lifetime.Terminated);
Assert.False(defaultLifetime != defaultLifetime);
Assert.False(Lifetime.Eternal != Lifetime.Eternal);
Assert.False(Lifetime.Terminated != Lifetime.Terminated);
Assert.True(Lifetime.Eternal != Lifetime.Terminated);
Assert.True(defaultLifetime != Lifetime.Terminated);
// Checks depending on the state of the flag:
if (newDefaultBehaviorFlag)
{
Assert.AreNotEqual(defaultLifetime, Lifetime.Eternal);
Assert.False(defaultLifetime == Lifetime.Eternal);
Assert.True(defaultLifetime != Lifetime.Eternal);
}
else
{
Assert.AreEqual(defaultLifetime, Lifetime.Eternal);
Assert.True(defaultLifetime == Lifetime.Eternal);
Assert.False(defaultLifetime != Lifetime.Eternal);
}
}
#pragma warning restore 1718
}