public void When_PolymorphicFor_To_Type_Not_Subtype_Of_Map_To_Type_Then_Throws() { // Arrange var mapper = new Mapper(); var sut = new PolymorphicMap(ProjectionType.Create<VehicleFrom, VehicleTo>(), mapper); // Act KKAssert.Throws<Exception>(() => sut.AddPolymorph(ProjectionType.Create<CarFrom, SimpleTo>()), "Cannot be polymorphic for a Projection whose 'to' type 'SimpleTo' is not a subtype of this maps 'to' type 'VehicleTo'."); }
public void When_PolymorphicFor_From_Type_Then_Throws() { // Arrange var mapper = new Mapper(); var sut = new PolymorphicMap(ProjectionType.Create<VehicleFrom, VehicleTo>(), mapper); sut.AddPolymorph(ProjectionType.Create<CarFrom, CarTo>()); // Act KKAssert.Throws<Exception>(() => sut.AddPolymorph(ProjectionType.Create<CarFrom, VehicleTo>()), "Illegal polymorph defintion. A definition has already been registered for the 'from' type 'CarFrom' and would be made ambiguous by this one."); }
public void When_AddPolymorphicFor_Then_Is_Added_To_Map() { // Arrange var mapper = new Mapper(); var sut = new PolymorphicMap(ProjectionType.Create<VehicleFrom, VehicleTo>(), mapper); var expected = ProjectionType.Create<CarFrom, CarTo>(); // Act sut.AddPolymorph(expected); // Assert Assert.NotNull(sut.Polymorphs.Single(x => x.ProjectionType == expected)); }
public void When_AfterMapping_Then_Is_Set_On_Map() { // Arrange var map = new PolymorphicMap(ProjectionType.Create<VehicleFrom, VehicleTo>(), new Mapper()); var sut = new PolymorphicMapBuilder<VehicleFrom, VehicleTo>(map); var flag = false; var postMapStep = (Action<VehicleFrom, VehicleTo>)((_, __) => flag = true); // Act sut.AfterMapping(postMapStep); map.AfterMapping(null, null); // Assert Assert.IsTrue(flag); }