public void Equals_EqualityComparisonApplied()
        {
            List <IntWrapper> source1 = new List <IntWrapper>()
            {
                new IntWrapper()
                {
                    Value = 5
                },
                new IntWrapper()
                {
                    Value = 4
                },
                new IntWrapper()
                {
                    Value = 3
                }
            };
            List <IntWrapper> source2 = new List <IntWrapper>()
            {
                new IntWrapper()
                {
                    Value = 3
                },
                new IntWrapper()
                {
                    Value = 2
                },
                new IntWrapper()
                {
                    Value = 1
                },
                new IntWrapper()
                {
                    Value = 0
                }
            };
            List <IntWrapper> result = source1.Union(source2, ProjectedEqualityComparer.Create <IntWrapper, int>(
                                                         (x, y) => { return(x == y); },
                                                         s => s.Value)).ToList();

            for (int i = 0; i < result.Count; i++)
            {
                Assert.IsTrue(result.Where(x => x.Value == i).Count() == 1);
            }

            Assert.IsTrue(result.Count == 6);
            Assert.IsTrue(result.Where(x => x.Value == 3).Count() == 1);
        }
 public void Constructor_NonNullComparisonAndNonNullProjection_DoesNotThrowException()
 {
     ProjectedEqualityComparer <IntWrapper, int> c = new ProjectedEqualityComparer <IntWrapper, int>((x, y) => true, x => x.Value);
 }
 public void Constructor_NullProjection_ThrowsException()
 {
     ProjectedEqualityComparer <IntWrapper, int> c = new ProjectedEqualityComparer <IntWrapper, int>((x, y) => true, null);
 }
 public void Constructor_NullComparison_ThrowsException()
 {
     ProjectedEqualityComparer <IntWrapper, int> c = new ProjectedEqualityComparer <IntWrapper, int>(null, (x) => { return(x.Value); });
 }
        public void Constructor_NonNullComparisonAndNonNullProjection_DoesNotThrowException()
        {
            ProjectedEqualityComparer<IntWrapper, int> c = new ProjectedEqualityComparer<IntWrapper, int>((x, y) => true, x => x.Value);

        }
 public void Constructor_NullProjection_ThrowsException()
 {
     ProjectedEqualityComparer<IntWrapper, int> c = new ProjectedEqualityComparer<IntWrapper, int>((x, y) => true, null);
 }
 public void Constructor_NullComparison_ThrowsException()
 {
     ProjectedEqualityComparer<IntWrapper, int> c = new ProjectedEqualityComparer<IntWrapper, int>(null, (x) => { return x.Value; });
 }