public void Map_MockedInternalMappers_Redirects() { BaseMapper <TestClassB, TestClassD>[] mapperMocks = A.CollectionOfFake <BaseMapper <TestClassB, TestClassD> >(5).ToArray(); var results = new List <IEnumerable <MemberMappingInfo <TestClassB, TestClassD> > >(); for (int i = 0; i < mapperMocks.Length; ++i) { var res = new[] { A.Fake <MemberMappingInfo <TestClassB, TestClassD> >( o => o.WithArgumentsForConstructor( new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() })) }; results.Add(res); A.CallTo(() => mapperMocks[i].GetMappings()) .Returns(res); } var target = new CompositeMapper <TestClassB, TestClassD>(mapperMocks); var source = new TestClassB(); var result = new TestClassD(); target.Map(source, result); foreach (var m in results.SelectMany(e => e)) { A.CallTo(() => m.Map(source, result)).MustHaveHappened(); } }
public void AddMapping_MockedInternalMappers_Redirects() { BaseMapper <TestClassB, TestClassD>[] mapperMocks = A.CollectionOfFake <BaseMapper <TestClassB, TestClassD> >(5).ToArray(); var extMock = A.Fake <BaseMapper <TestClassB, TestClassD> >( o => o.Implements(typeof(IExtensibleMapper <TestClassB, TestClassD>))); var results = new List <IEnumerable <MemberMappingInfo <TestClassB, TestClassD> > >(); Randomizer rnd = Randomizer.GetRandomizer(typeof(CompositeMapper <,>).GetMethod("AddMapping")); int extPos = rnd.Next(mapperMocks.Length); for (int i = 0; i < mapperMocks.Length; ++i) { var res = new[] { A.Fake <MemberMappingInfo <TestClassB, TestClassD> >( o => o.WithArgumentsForConstructor( new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() })) }; if (i == extPos) { mapperMocks[i] = extMock; } results.Add(res); A.CallTo(() => mapperMocks[i].GetMappings()) .Returns(res); } var target = new CompositeMapper <TestClassB, TestClassD>(mapperMocks); var source = new TestClassB(); var result = new TestClassD(); MappingAction <TestClassB, TestClassD> action = (s, t) => t.SomeOtherName = s.Name; target.AddMappingAction("foo", "bar", action); target.ExtensibleMapper.ShouldBeSameAs(extMock); A.CallTo(() => ((IExtensibleMapper <TestClassB, TestClassD>)extMock).AddMappingAction("foo", "bar", action)) .MustHaveHappened(); }
public void AddMapping_MockedInternalMappers_Redirects() { var mapperMocks = A.CollectionOfFake<BaseMapper<TestClassB, TestClassD>>(5).ToArray(); var extMock = A.Fake<BaseMapper<TestClassB, TestClassD>>( o => o.Implements(typeof(IExtensibleMapper<TestClassB, TestClassD>))); var results = new List<IEnumerable<MemberMappingInfo<TestClassB, TestClassD>>>(); var rnd = NUnit.Framework.Randomizer.GetRandomizer(typeof(CompositeMapper<,>).GetMethod("AddMapping")); var extPos = rnd.Next(mapperMocks.Length); for (int i = 0; i < mapperMocks.Length; ++i) { var res = new MemberMappingInfo<TestClassB, TestClassD>[] { A.Fake<MemberMappingInfo<TestClassB, TestClassD>>( o => o.WithArgumentsForConstructor( new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() })) }; if (i == extPos) { mapperMocks[i] = extMock; } results.Add(res); A.CallTo(() => mapperMocks[i].GetMappings()) .Returns(res); } var target = new CompositeMapper<TestClassB, TestClassD>(mapperMocks); var source = new TestClassB(); var result = new TestClassD(); MappingAction<TestClassB, TestClassD> action = (s, t) => t.SomeOtherName = s.Name; target.AddMappingAction("foo", "bar", action); target.ExtensibleMapper.ShouldBeSameAs(extMock); A.CallTo(() => ((IExtensibleMapper<TestClassB, TestClassD>)extMock).AddMappingAction("foo", "bar", action)) .MustHaveHappened(); }
public IExtensibleMapper <TSource, TTarget> ResolveMapper <TSource, TTarget>() { var res = TryGetMapper <TSource, TTarget>(); if (res == null) { lock (this.options) { var innerMappers = new List <IMapper <TSource, TTarget> >(); var mapperTypes = this.options.MapperOrder; foreach (var t in mapperTypes) { var targetType = t; if (targetType.IsGenericType) { targetType = targetType.GetGenericTypeDefinition(); targetType = targetType.MakeGenericType(new Type[] { typeof(TSource), typeof(TTarget) }); } var m = this.CreateMapper <TSource, TTarget>(targetType); innerMappers.Add(m); } res = new CompositeMapper <TSource, TTarget>( new MapperConstructionInfo(this), innerMappers.ToArray()); AddMapper(res); } } return(res); }
public void Map_MockedInternalMappers_Redirects() { BaseMapper<TestClassB, TestClassD>[] mapperMocks = A.CollectionOfFake<BaseMapper<TestClassB, TestClassD>>(5).ToArray(); var results = new List<IEnumerable<MemberMappingInfo<TestClassB, TestClassD>>>(); for (int i = 0; i < mapperMocks.Length; ++i) { var res = new[] { A.Fake<MemberMappingInfo<TestClassB, TestClassD>>( o => o.WithArgumentsForConstructor( new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() })) }; results.Add(res); A.CallTo(() => mapperMocks[i].GetMappings()) .Returns(res); } var target = new CompositeMapper<TestClassB, TestClassD>(mapperMocks); var source = new TestClassB(); var result = new TestClassD(); target.Map(source, result); foreach (var m in results.SelectMany(e => e)) { A.CallTo(() => m.Map(source, result)).MustHaveHappened(); } }