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_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_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)); }