public void GivenInterpreterResult_WhenOrNoneIsAlwaysFalse_ThenIsNotAlwaysFalse()
        {
            var left  = new InterpreterResult(false, false);
            var right = new InterpreterResult(false, false);

            var result = InterpreterResult.Or(left, right);

            Assert.IsFalse(result.IsAlwaysFalse.Value);
        }
        public void GivenInterpreterResult_WhenOrNoneResult_ThenResultIsFalse()
        {
            var left  = new InterpreterResult(false, false);
            var right = new InterpreterResult(false, false);

            var result = InterpreterResult.Or(left, right);

            Assert.IsFalse(result.Result);
        }
        public void GivenInterpreterResult_WhenOrBothResult_ThenResultIsTrue()
        {
            var left  = new InterpreterResult(true, false);
            var right = new InterpreterResult(true, false);

            var result = InterpreterResult.Or(left, right);

            Assert.IsTrue(result.Result);
        }
        public void GivenInterpreterResult_WhenComplex_Then3()
        {
            var leftPairLeft  = new InterpreterResult(false, true);
            var leftPairRight = new InterpreterResult(false, true);

            var rightPairLeft  = new InterpreterResult(false, true);
            var rightPairRight = new InterpreterResult(false, true);


            var leftPairResult  = InterpreterResult.And(leftPairLeft, leftPairRight);
            var rightPairResult = InterpreterResult.And(rightPairLeft, rightPairRight);
            var result          = InterpreterResult.Or(leftPairResult, rightPairResult);

            Assert.IsFalse(result.Result);
            Assert.IsTrue(result.IsAlwaysFalse.Value);
        }