public void Should_Return_Not_Equal_When_Collections_Counts_Are_Different(int valueCollectionCount, int otherCollectionCount)
        {
            // fixture setup
            IEnumerable <ObjectWithSingleStringProperty> value = new ObjectWithSingleStringProperty[valueCollectionCount];

            IEnumerable <AnotherObjectWithSingleStringProperty> other = new AnotherObjectWithSingleStringProperty[otherCollectionCount];

            // exercise
            var result = value.CompareCollectionsUsingLikeness(other);

            // verify
            Assert.That(result, Is.False);
        }
        public void Should_Return_Equal_When_Source_Collection_Item_Is_Null_And_Destination_Collection_Item_Is_Null()
        {
            // fixture setup
            IEnumerable <ObjectWithSingleStringProperty> value = new ObjectWithSingleStringProperty[]
            {
                null
            };

            IEnumerable <AnotherObjectWithSingleStringProperty> other = new AnotherObjectWithSingleStringProperty[]
            {
                null
            };

            // exercise
            var result = value.CompareCollectionsUsingLikeness(other);

            // verify
            Assert.That(result, Is.True);
        }
        public void Should_Be_Able_To_Use_Comparison_Overrides_To_Force_Equal()
        {
            // fixture setup
            IEnumerable <ObjectWithSingleStringProperty> value = new ObjectWithSingleStringProperty[]
            {
                new ObjectWithSingleStringPropertyBuilder().WithStringValue("test").Build(),
                new ObjectWithSingleStringPropertyBuilder().WithStringValue("test2").Build(),
            };

            IEnumerable <AnotherObjectWithSingleStringProperty> other = new AnotherObjectWithSingleStringProperty[]
            {
                new AnotherObjectWithSingleStringPropertyBuilder().WithStringValue("test").Build(),
                new AnotherObjectWithSingleStringPropertyBuilder().WithStringValue("ASDF").Build(),
            };

            // exercise
            var result = value.CompareCollectionsUsingLikeness(other, likeness => likeness.With(x => x.StringTypeProperty).EqualsWhen((s, d) => true));

            // verify
            Assert.That(result, Is.True);
        }
        public void Should_Return_Not_Equal_When_Collections_Items_Are_Not_Equal_Using_Default_Likeness()
        {
            // fixture setup
            IEnumerable <ObjectWithSingleStringProperty> value = new ObjectWithSingleStringProperty[]
            {
                new ObjectWithSingleStringPropertyBuilder().WithStringValue("test").Build(),
                new ObjectWithSingleStringPropertyBuilder().WithStringValue("test2").Build(),
            };

            IEnumerable <AnotherObjectWithSingleStringProperty> other = new AnotherObjectWithSingleStringProperty[]
            {
                new AnotherObjectWithSingleStringPropertyBuilder().WithStringValue("test").Build(),
                new AnotherObjectWithSingleStringPropertyBuilder().WithStringValue("ASDF").Build(),
            };

            // exercise
            var result = value.CompareCollectionsUsingLikeness(other);

            // verify
            Assert.That(result, Is.False);
        }