public void Returns_true_when_other_has_the_same_values(
                DummyValueObjectBuilder sutBuilder
                )
            {
                sutBuilder.SkipEqualityCustomizationParameter();

                var sut   = sutBuilder.Build();
                var other = sutBuilder.Build();

                sut.Equals(other).Should().BeTrue();
            }
            public void Returns_false_when_other_has_different_values(
                DummyValueObjectBuilder sutBuilder,
                DummyValueObjectBuilder otherBuilder
                )
            {
                var sut = sutBuilder
                          .SkipEqualityCustomizationParameter()
                          .Build();
                var other = otherBuilder
                            .SkipEqualityCustomizationParameter()
                            .Build();

                sut.Equals(other).Should().BeFalse();
            }
            public void Calls_customization_when_values_are_equal(
                Mock <IEqualityCustomization> equalityCustomization,
                DummyValueObjectBuilder sutBuilder
                )
            {
                sutBuilder
                .WithEqualityCustomization(equalityCustomization.Object);

                var sut   = sutBuilder.Build();
                var other = sutBuilder.Build();

                equalityCustomization.Setup(x =>
                                            x.CheckEquality(sut, other))
                .Verifiable();

                var res = sut.Equals(other);

                equalityCustomization.Verify();
            }
            public void Returns_the_customization_output_when_values_are_equals(
                bool customizationOutput,
                Mock <IEqualityCustomization> equalityCustomization,
                DummyValueObjectBuilder sutBuilder,
                DummyValueObjectBuilder otherBuilder
                )
            {
                sutBuilder
                .WithEqualityCustomization(equalityCustomization.Object);

                var sut   = sutBuilder.Build();
                var other = otherBuilder
                            .WithInt(sut.Int)
                            .WithString(sut.String)
                            .WithEqualityCustomization(equalityCustomization.Object)
                            .Build();

                equalityCustomization.Setup(x =>
                                            x.CheckEquality(sut, other))
                .Returns(customizationOutput);

                sut.Equals(other).Should().Be(customizationOutput);
            }