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 }
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); }
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); }
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); }
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>())); }
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>())); }
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); }
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 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); }
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); }
public void SutIsSequence() { var sut = new CompositeReflectionElement(); Assert.IsAssignableFrom <IEnumerable <IReflectionElement> >(sut); }
public void SutIsReflectionElement() { var sut = new CompositeReflectionElement(); Assert.IsAssignableFrom <IReflectionElement>(sut); }