Example #1
0
        public void AcceptAcceptsVisitorForAllElements()
        {
            // Fixture setup
            var v1 = new Mock <IReflectionVisitor <int> >().Object;
            var v2 = new Mock <IReflectionVisitor <int> >().Object;
            var v3 = new Mock <IReflectionVisitor <int> >().Object;
            var v4 = new Mock <IReflectionVisitor <int> >().Object;
            var e1 = new Mock <IReflectionElement>();
            var e2 = new Mock <IReflectionElement>();
            var e3 = new Mock <IReflectionElement>();

            e1.Setup(x => x.Accept(v1)).Returns(v2);
            e2.Setup(x => x.Accept(v2)).Returns(v3);
            e3.Setup(x => x.Accept(v3)).Returns(v4);

            var sut = new CompositeReflectionElement(
                e1.Object,
                e2.Object,
                e3.Object);

            // Exercise system
            var actual = sut.Accept(v1);

            // Verify outcome
            var expected = v4;

            Assert.Equal(expected, actual);

            // Teardown
        }
        public void AcceptAcceptsVisitorForAllElements()
        {
            // Fixture setup
            var v1 = new Mock<IReflectionVisitor<int>>().Object;
            var v2 = new Mock<IReflectionVisitor<int>>().Object;
            var v3 = new Mock<IReflectionVisitor<int>>().Object;
            var v4 = new Mock<IReflectionVisitor<int>>().Object;
            var e1 = new Mock<IReflectionElement>();
            var e2 = new Mock<IReflectionElement>();
            var e3 = new Mock<IReflectionElement>();
            e1.Setup(x => x.Accept(v1)).Returns(v2);
            e2.Setup(x => x.Accept(v2)).Returns(v3);
            e3.Setup(x => x.Accept(v3)).Returns(v4);

            var sut = new CompositeReflectionElement(
                e1.Object,
                e2.Object,
                e3.Object);
            
            // Exercise system
            var actual = sut.Accept(v1);
            
            // Verify outcome
            var expected = v4;
            Assert.Equal(expected, actual);
            
            // Teardown
        }
Example #3
0
        public void SutDoesNotEqualAnonymousObject(object other)
        {
            var e1  = new Mock <IReflectionElement>().Object;
            var e2  = new Mock <IReflectionElement>().Object;
            var e3  = new Mock <IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.Equals(other);

            Assert.False(actual);
        }
Example #4
0
        public bool Equals(IReflectionElement x, IReflectionElement y)
        {
            var values = new CompositeReflectionElement(x, y)
                         .Accept(this.visitor)
                         .Value
                         .Cast <object>()
                         .ToArray();

            return(values.Length == 2 &&
                   values.Distinct().Count() == 1);
        }
Example #5
0
            bool IEqualityComparer <IReflectionElement> .Equals(IReflectionElement x, IReflectionElement y)
            {
                T[] values = new CompositeReflectionElement(x, y)
                             .Accept(_visitor)
                             .Value
                             .ToArray();

                IEnumerable <T> distinctValues = values.Distinct(_comparer);

                return(values.Length == 2 &&
                       distinctValues.Count() == 1);
            }
Example #6
0
        public void SutEqualsOtherIdenticalInstance()
        {
            var e1    = new Mock <IReflectionElement>().Object;
            var e2    = new Mock <IReflectionElement>().Object;
            var e3    = new Mock <IReflectionElement>().Object;
            var sut   = new CompositeReflectionElement(e1, e2, e3);
            var other = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.Equals(other);

            Assert.True(actual);
        }
        public void SutEqualsOtherIdenticalInstance()
        {
            var e1 = new Mock<IReflectionElement>().Object;
            var e2 = new Mock<IReflectionElement>().Object;
            var e3 = new Mock<IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);
            var other = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.Equals(other);

            Assert.True(actual);
        }
        bool IEqualityComparer <IReflectionElement> .Equals(IReflectionElement x, IReflectionElement y)
        {
            var values = new CompositeReflectionElement(x, y)
                         .Accept(this.visitor)
                         .Value
                         .ToArray();

            var distinctValues = values.Distinct(this.comparer);

            return(values.Length == 2 &&
                   distinctValues.Count() == 1);
        }
 public void SutYieldsInjectedElements()
 {
     var expected = new[]
     {
         new Mock<IReflectionElement>().Object,
         new Mock<IReflectionElement>().Object,
         new Mock<IReflectionElement>().Object
     };
     var sut = new CompositeReflectionElement(expected);
     Assert.True(expected.SequenceEqual(sut));
     Assert.True(
         expected.Cast<object>().SequenceEqual(sut.OfType<object>()));
 }
Example #10
0
        public void SutYieldsInjectedElements()
        {
            var expected = new[]
            {
                new Mock <IReflectionElement>().Object,
                new Mock <IReflectionElement>().Object,
                new Mock <IReflectionElement>().Object
            };
            var sut = new CompositeReflectionElement(expected);

            Assert.True(expected.SequenceEqual(sut));
            Assert.True(
                expected.Cast <object>().SequenceEqual(sut.OfType <object>()));
        }
Example #11
0
        public void GetHashCodeReturnsCorrectResult()
        {
            var e1  = new Mock <IReflectionElement>().Object;
            var e2  = new Mock <IReflectionElement>().Object;
            var e3  = new Mock <IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.GetHashCode();

            var expected = (from element in sut select element.GetHashCode())
                           .Aggregate((x, y) => x ^ y);

            Assert.Equal(expected, actual);
        }
Example #12
0
        public void SutDoesNotEqualDifferentInstanceOfSameType()
        {
            // Fixture setup
            var e1  = new Mock <IReflectionElement>().Object;
            var e2  = new Mock <IReflectionElement>().Object;
            var e3  = new Mock <IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var e4    = new Mock <IReflectionElement>().Object;
            var e5    = new Mock <IReflectionElement>().Object;
            var e6    = new Mock <IReflectionElement>().Object;
            var other = new CompositeReflectionElement(e4, e5, e6);

            // Exercise system
            var actual = sut.Equals(other);

            // Verify outcome
            Assert.False(actual);

            // Teardown
        }
Example #13
0
        public void ReadFromSeveralPropertiesAndFields()
        {
            var ts = new TimeSpan(2, 4, 3, 8, 9);
            var flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
            var elements = ts.GetType()
                .GetProperties(flags)
                .Select(pi => new PropertyInfoElement(pi))
                .Cast<IReflectionElement>()
                .Concat(ts.GetType()
                    .GetFields(flags)
                    .Select(fi => new FieldInfoElement(fi))
                    .Cast<IReflectionElement>())
                .ToArray();
            var visitor = new ValueCollectingVisitor(ts);

            var actual =
                new CompositeReflectionElement(elements).Accept(visitor);

            var actualValues = actual.Value.Cast<object>().ToArray();
            Assert.Equal(elements.Length, actualValues.Length);
            Assert.Equal(1, actualValues.Count(ts.Days.Equals));
            Assert.Equal(1, actualValues.Count(ts.Hours.Equals));
            Assert.Equal(1, actualValues.Count(ts.Milliseconds.Equals));
            Assert.Equal(1, actualValues.Count(ts.Minutes.Equals));
            Assert.Equal(1, actualValues.Count(ts.Seconds.Equals));
            Assert.Equal(1, actualValues.Count(ts.Ticks.Equals));
            Assert.Equal(1, actualValues.Count(ts.TotalDays.Equals));
            Assert.Equal(1, actualValues.Count(ts.TotalHours.Equals));
            Assert.Equal(1, actualValues.Count(ts.TotalMilliseconds.Equals));
            Assert.Equal(1, actualValues.Count(ts.TotalMinutes.Equals));
            Assert.Equal(1, actualValues.Count(ts.TotalSeconds.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.MaxValue.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.MinValue.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.TicksPerDay.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.TicksPerHour.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.TicksPerMillisecond.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.TicksPerMinute.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.TicksPerSecond.Equals));
            Assert.Equal(1, actualValues.Count(TimeSpan.Zero.Equals));
        }
        public void SutDoesNotEqualDifferentInstanceOfSameType()
        {
            // Fixture setup
            var e1 = new Mock<IReflectionElement>().Object;
            var e2 = new Mock<IReflectionElement>().Object;
            var e3 = new Mock<IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var e4 = new Mock<IReflectionElement>().Object;
            var e5 = new Mock<IReflectionElement>().Object;
            var e6 = new Mock<IReflectionElement>().Object;
            var other = new CompositeReflectionElement(e4, e5, e6);

            // Exercise system
            var actual = sut.Equals(other);

            // Verify outcome
            Assert.False(actual);

            // Teardown
        }
 public void SutIsSequence()
 {
     var sut = new CompositeReflectionElement();
     Assert.IsAssignableFrom<IEnumerable<IReflectionElement>>(sut);
 }
 public void SutIsReflectionElement()
 {
     var sut = new CompositeReflectionElement();
     Assert.IsAssignableFrom<IReflectionElement>(sut);
 }
        public void SutDoesNotEqualAnonymousObject(object other)
        {
            var e1 = new Mock<IReflectionElement>().Object;
            var e2 = new Mock<IReflectionElement>().Object;
            var e3 = new Mock<IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.Equals(other);
            
            Assert.False(actual);
        }
Example #18
0
        public void WriteToSeveralPropertiesAndFields()
        {
            var t = new ClassWithWritablePropertiesAndFields<int>();
            var elements = t.GetType()
                .GetProperties()
                .Select(pi => new PropertyInfoElement(pi))
                .Cast<IReflectionElement>()
                .Concat(t.GetType()
                    .GetFields()
                    .Select(fi => new FieldInfoElement(fi))
                    .Cast<IReflectionElement>())
                .ToArray();
            var visitor = new ValueWritingVisitor(t);

            var actual =
                new CompositeReflectionElement(elements).Accept(visitor);
            actual.Value(42);

            Assert.Equal(42, t.Field1);
            Assert.Equal(42, t.Field2);
            Assert.Equal(42, t.Property1);
            Assert.Equal(42, t.Property2);
        }
        public void GetHashCodeReturnsCorrectResult()
        {
            var e1 = new Mock<IReflectionElement>().Object;
            var e2 = new Mock<IReflectionElement>().Object;
            var e3 = new Mock<IReflectionElement>().Object;
            var sut = new CompositeReflectionElement(e1, e2, e3);

            var actual = sut.GetHashCode();

            var expected = (from element in sut select element.GetHashCode())
                .Aggregate((x, y) => x ^ y);
            Assert.Equal(expected, actual);
        }
Example #20
0
        public void SutIsSequence()
        {
            var sut = new CompositeReflectionElement();

            Assert.IsAssignableFrom <IEnumerable <IReflectionElement> >(sut);
        }
Example #21
0
        public void SutIsReflectionElement()
        {
            var sut = new CompositeReflectionElement();

            Assert.IsAssignableFrom <IReflectionElement>(sut);
        }