public void NullableCandidate_ReturnFalse(int?candidate, int?expected)
            {
                var sut = new EqualSpecification <int?>(expected);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.False(result);
            }
            public void NotEqualCandidate_ReturnFalse <T>(T candidate, T expected, IEqualityComparer <T> comparer)
            {
                candidate = candidate?.ToString() != "null" ? candidate : default;
                var sut = new EqualSpecification <T>(expected, comparer);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.False(result);
            }
            public void CorrectNullableCandidate_ReturnExpectedResultObject(int?candidate, int?expected,
                                                                            SpecificationResult expResult)
            {
                var sut = new EqualSpecification <int?>(expected);

                var overall = sut.IsSatisfiedBy(candidate, out var result);

                Assert.True(overall);
                Assert.Equal(expResult, result, new SpecificationResultComparer());
            }
            public void NotEqualCandidate_ReturnExpectedResultObject <T>(T candidate, T expected,
                                                                         IEqualityComparer <T> comparer, SpecificationResult expResult)
            {
                candidate = candidate?.ToString() != "null" ? candidate : default;
                var sut = new EqualSpecification <T>(expected, comparer);

                var overall = sut.IsSatisfiedBy(candidate, out var result);

                Assert.False(overall);
                Assert.Equal(expResult, result, new SpecificationResultComparer());
            }