public void Given_left_eq_right_eq_OrExpression_Simplify_should_returns_the_inner_OrExpression(OrExpression filterExpression)
        {
            // Arrange
            OrExpression orExpression = new(filterExpression, filterExpression);

            // Act
            FilterExpression simplified   = orExpression.Simplify();
            bool             isEquivalent = simplified.IsEquivalentTo(filterExpression);

            // Assert
            isEquivalent.Should()
            .BeTrue();
        }
        public void Given_OneOfExpression_instance_which_contains_only_one_expression_Simplify_should_return_an_expression_that_is_requivalent_to_the_inner_expression(NonNull <FilterExpression> expression)
        {
            // Arrange
            _outputHelper.WriteLine($"input : {expression.Item}");
            OneOfExpression oneOf = new(expression.Item);

            // Act
            FilterExpression simplified = oneOf.Simplify();

            // Assert
            simplified.IsEquivalentTo(expression.Item)
            .Should()
            .BeTrue();
        }
        public void Given_left_eq_right_Simplify_should_return_left(FilterExpression expected)
        {
            // Arrange
            OrExpression orExpression = new(expected, expected);

            // Act
            FilterExpression actual = orExpression.Simplify();

            _outputHelper.WriteLine($"Simplifiied expression : {actual}");

            bool isEquivalent = actual.IsEquivalentTo(expected);

            // Assert
            isEquivalent.Should()
            .BeTrue("the meaning of the expression should remain the same even after being simplified");
        }