public void Analyze_IndicatesCancellativityCorrectly_ForClassicWeaklyButNotStronglyCancellativeQP()
        {
            var qp       = UsefulQPs.GetClassicWeaklyButNotStronglyCancellativeQP();
            var analyzer = CreateAnalyzer();

            var settings = CreateSettings(CancellativityTypes.Cancellativity);
            var results  = analyzer.Analyze(qp, settings);

            Assert.That(
                results.MainResults.HasFlag(QPAnalysisMainResults.NotCancellative),
                $"The main result was {results.MainResults}, which does not indicate that the QP fails to be cancellative.");

            settings = CreateSettings(CancellativityTypes.WeakCancellativity);
            results  = analyzer.Analyze(qp, settings);
            Assert.That(
                !results.MainResults.HasFlag(QPAnalysisMainResults.NotWeaklyCancellative),
                $"The main result was {results.MainResults}, which indicates that the QP fails to be weakly cancellative.");

            settings = CreateSettings(CancellativityTypes.Cancellativity | CancellativityTypes.WeakCancellativity);
            results  = analyzer.Analyze(qp, settings);
            Assert.That(
                results.MainResults.HasFlag(QPAnalysisMainResults.NotCancellative),
                $"The main result was {results.MainResults}, which does not indicate that the QP fails to be cancellative.");
            Assert.That(
                !results.MainResults.HasFlag(QPAnalysisMainResults.NotWeaklyCancellative),
                $"The main result was {results.MainResults}, which indicates that the QP fails to be weakly cancellative.");
        }