public void TestInstancesAreEqualFailsDueToNull(ValidatorLinkage <BooleanValidator> linkage, bool areEqual)
        {
            "Given a new ValidatorBase linkage instance"
            .x(() => linkage = new ValidatorLinkage <BooleanValidator>(Validate.That("test1", true)));

            "Testing that both linkage equals a null"
            .x(() => { areEqual = linkage.Equals(null); });

            "Should evaluate false"
            .x(() => areEqual.Should().BeFalse());
        }
        public void TestInstancesAreNotEqualPasses(ValidatorLinkage <BooleanValidator> firstLinkage, ValidatorLinkage <BooleanValidator> secondLinkage, bool areNotEqual)
        {
            "Given a first ValidatorBase linkage instance"
            .x(() => firstLinkage = new ValidatorLinkage <BooleanValidator>(Validate.That("test1", true)));

            "And given a secondLinkage ValidatorBase linkage instance"
            .x(() => secondLinkage = new ValidatorLinkage <BooleanValidator>(Validate.That("test2", true)));

            "Testing that both linkages are not equal"
            .x(() => { areNotEqual = firstLinkage != secondLinkage; });

            "Should evaluate true"
            .x(() => areNotEqual.Should().BeTrue());
        }
        public void TestInstancesAsObjectsAreEqualFails(ValidatorLinkage <BooleanValidator> firstLinkage, object secondLinkage, bool areEqual)
        {
            "Given a new first ValidatorBase linkage instance"
            .x(() => firstLinkage = new ValidatorLinkage <BooleanValidator>(Validate.That("test1", true)));

            "And given a new secondLinkage ValidatorBase linkage instance stored as an object"
            .x(() => secondLinkage = new ValidatorLinkage <BooleanValidator>(Validate.That("test2", true)));

            "Testing that both linkages are equal"
            .x(() => { areEqual = firstLinkage.Equals(secondLinkage); });

            "Should evaluate false"
            .x(() => areEqual.Should().BeFalse());
        }
        public void TestTwoEqualInstancesHaveSameHashPasses(BooleanValidator validatorBase, ValidatorLinkage <BooleanValidator> firstLinkage, ValidatorLinkage <BooleanValidator> secondLinkage, bool areEqual)
        {
            "Given a new ValidatorBase instance"
            .x(() => validatorBase = Validate.That("test1", true));

            "And given a first ValidatorBase linkage instance"
            .x(() => firstLinkage = new ValidatorLinkage <BooleanValidator>(validatorBase));

            "And given a secondLinkage ValidatorBase linkage instance"
            .x(() => secondLinkage = new ValidatorLinkage <BooleanValidator>(validatorBase));

            "Testing that both linkage's hashes are equal"
            .x(() => { areEqual = firstLinkage.GetHashCode() == secondLinkage.GetHashCode(); });

            "Should evaluate true"
            .x(() => areEqual.Should().BeTrue());
        }