public void Test_Filter_Count() { var types = new List <Type> { typeof(BaseMapping1), typeof(SpecialMapping1) }; var input = new Mock <IInput>(MockBehavior.Strict); var activatorService = new Mock <IActivatorService>(MockBehavior.Strict); activatorService .Setup(s => s.Create(It.IsAny <Type>(), It.Is <IInput>(i => i == input.Object))) .Returns(() => { var mapping = new Mock <IMappingBase>(); mapping.Setup(s => s.IsAcceptable) .Returns(true); return(mapping.Object); }); var service = new MappingFilterService(activatorService.Object); var result = service.Filter(types, input.Object); activatorService.Verify(v => v.Create(It.IsAny <Type>(), It.Is <IInput>(i => i == input.Object)), Times.Exactly(types.Count)); Assert.IsNotNull(result); Assert.AreEqual(types.Count, result.Count); }
public void Test_Filter_SingleResult() { var types = new List <Type> { typeof(BaseMapping2), typeof(BaseMapping2), typeof(SpecialMapping2) }; var input = new Mock <IInput>(MockBehavior.Strict); var activatorService = new Mock <IActivatorService>(MockBehavior.Strict); activatorService .Setup(s => s.Create(It.Is <Type>(t => t == typeof(BaseMapping2)), It.Is <object[]>(args => args.Contains(input.Object)))) .Returns(() => { var m = new Mock <IMappingBase>(); m.Setup(s => s.IsAcceptable) .Returns(true); return(m.Object); }); var mapping = new Mock <IMappingBase>(); mapping.Setup(s => s.IsAcceptable) .Returns(true); mapping.Setup(s => s.IsOverride) .Returns(true); activatorService .Setup(s => s.Create(It.Is <Type>(t => t == typeof(SpecialMapping2)), It.Is <object[]>(args => args.Contains(input.Object)))) .Returns(mapping.Object); var service = new MappingFilterService(activatorService.Object); var result = service.Filter(types, input.Object); activatorService.Verify(v => v.Create(It.IsAny <Type>(), It.Is <IInput>(i => i == input.Object)), Times.Exactly(types.Count)); Assert.IsNotNull(result); Assert.IsTrue(result.Contains(mapping.Object)); }