public void TestEquals()

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
    }