public void ReadAsPipingSurfaceLine_WithInvalidPipingCharacteristicPointType_ThrowsInvalidEnumArgumentException() { // Setup var random = new Random(31); Point3D[] points = { CreatePoint3D(random) }; const byte invalidCharacteristicPointType = 37; var entity = new SurfaceLineEntity { Name = "Better name.", ReferenceLineIntersectionX = random.NextDouble(), ReferenceLineIntersectionY = random.NextDouble(), PointsXml = new Point3DCollectionXmlSerializer().ToXml(points), PipingCharacteristicPointEntities = { CreatePipingCharacteristicPointEntity(points[0], (PipingCharacteristicPointType)invalidCharacteristicPointType) } }; // Call TestDelegate call = () => entity.ReadAsPipingSurfaceLine(new ReadConversionCollector()); // Assert string exoectedMessage = $"The value of argument 'type' ({invalidCharacteristicPointType}) is invalid for Enum type '{nameof(PipingCharacteristicPointType)}'."; string parameterName = TestHelper.AssertThrowsArgumentExceptionAndTestMessage <InvalidEnumArgumentException>(call, exoectedMessage).ParamName; Assert.AreEqual("type", parameterName); }
public void ReadAsPipingSurfaceLine_SurfaceLineEntityWithoutGeometryPointXml_ReturnSurfaceLine() { // Setup var collector = new ReadConversionCollector(); var random = new Random(31); var entity = new SurfaceLineEntity { Name = "nice name!", ReferenceLineIntersectionX = random.NextDouble(), ReferenceLineIntersectionY = random.NextDouble(), PointsXml = new Point3DCollectionXmlSerializer().ToXml(new Point3D[0]) }; // Call PipingSurfaceLine surfaceLine = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreEqual(entity.Name, surfaceLine.Name); Assert.AreEqual(entity.ReferenceLineIntersectionX, surfaceLine.ReferenceLineIntersectionWorldPoint.X); Assert.AreEqual(entity.ReferenceLineIntersectionY, surfaceLine.ReferenceLineIntersectionWorldPoint.Y); CollectionAssert.IsEmpty(surfaceLine.Points); Assert.IsNull(surfaceLine.BottomDitchDikeSide); Assert.IsNull(surfaceLine.BottomDitchPolderSide); Assert.IsNull(surfaceLine.DikeToeAtPolder); Assert.IsNull(surfaceLine.DikeToeAtRiver); Assert.IsNull(surfaceLine.DitchDikeSide); Assert.IsNull(surfaceLine.DitchPolderSide); }
public void ReadAsPipingSurfaceLine_SurfaceLineEntityReadMultipleTimes_ReturnSameSurfaceLine() { // Setup var collector = new ReadConversionCollector(); var entity = new SurfaceLineEntity { Name = "surface line", PointsXml = new Point3DCollectionXmlSerializer().ToXml(new Point3D[0]) }; // Call PipingSurfaceLine surfaceLine1 = entity.ReadAsPipingSurfaceLine(collector); PipingSurfaceLine surfaceLine2 = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreSame(surfaceLine1, surfaceLine2); }
public void ReadAsPipingSurfaceLine_CollectorNull_ThrowArgumentNullException() { // Setup var entity = new SurfaceLineEntity(); // Call TestDelegate call = () => entity.ReadAsPipingSurfaceLine(null); // Assert var exception = Assert.Throws <ArgumentNullException>(call); Assert.AreEqual("collector", exception.ParamName); }
public void ReadAsPipingSurfaceLine_SurfaceLineEntityWithGeometryPointXmlAndCharacteristicPoints_ReturnFullSurfaceLine() { // Setup var collector = new ReadConversionCollector(); var random = new Random(31); Point3D[] points = { CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random) }; var entity = new SurfaceLineEntity { Name = "Better name.", ReferenceLineIntersectionX = random.NextDouble(), ReferenceLineIntersectionY = random.NextDouble(), PointsXml = new Point3DCollectionXmlSerializer().ToXml(points), PipingCharacteristicPointEntities = { CreatePipingCharacteristicPointEntity(points[1], PipingCharacteristicPointType.BottomDitchDikeSide), CreatePipingCharacteristicPointEntity(points[2], PipingCharacteristicPointType.BottomDitchPolderSide), CreatePipingCharacteristicPointEntity(points[3], PipingCharacteristicPointType.DikeToeAtPolder), CreatePipingCharacteristicPointEntity(points[4], PipingCharacteristicPointType.DikeToeAtRiver), CreatePipingCharacteristicPointEntity(points[5], PipingCharacteristicPointType.DitchDikeSide), CreatePipingCharacteristicPointEntity(points[6], PipingCharacteristicPointType.DitchPolderSide) } }; // Call PipingSurfaceLine surfaceLine = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreEqual(entity.Name, surfaceLine.Name); Assert.AreEqual(entity.ReferenceLineIntersectionX, surfaceLine.ReferenceLineIntersectionWorldPoint.X); Assert.AreEqual(entity.ReferenceLineIntersectionY, surfaceLine.ReferenceLineIntersectionWorldPoint.Y); CollectionAssert.AreEqual(points, surfaceLine.Points); Assert.AreSame(surfaceLine.Points.ElementAt(1), surfaceLine.BottomDitchDikeSide); Assert.AreSame(surfaceLine.Points.ElementAt(2), surfaceLine.BottomDitchPolderSide); Assert.AreSame(surfaceLine.Points.ElementAt(3), surfaceLine.DikeToeAtPolder); Assert.AreSame(surfaceLine.Points.ElementAt(4), surfaceLine.DikeToeAtRiver); Assert.AreSame(surfaceLine.Points.ElementAt(5), surfaceLine.DitchDikeSide); Assert.AreSame(surfaceLine.Points.ElementAt(6), surfaceLine.DitchPolderSide); }
public void ReadAsPipingSurfaceLine_SurfaceLineEntityWithPointsAndAllCharacteristicPointsSetToSamePoint_ReturnsExpectedSurfaceLine() { // Setup var collector = new ReadConversionCollector(); var random = new Random(31); Point3D[] points = { CreatePoint3D(random), CreatePoint3D(random) }; var entity = new SurfaceLineEntity { Name = "Better name.", ReferenceLineIntersectionX = random.NextDouble(), ReferenceLineIntersectionY = random.NextDouble(), PointsXml = new Point3DCollectionXmlSerializer().ToXml(points), PipingCharacteristicPointEntities = { CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.BottomDitchDikeSide), CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.BottomDitchPolderSide), CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.DikeToeAtPolder), CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.DikeToeAtRiver), CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.DitchDikeSide), CreatePipingCharacteristicPointEntity(points[0], PipingCharacteristicPointType.DitchPolderSide) } }; // Call PipingSurfaceLine surfaceLine = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreEqual(entity.Name, surfaceLine.Name); Assert.AreEqual(entity.ReferenceLineIntersectionX, surfaceLine.ReferenceLineIntersectionWorldPoint.X); Assert.AreEqual(entity.ReferenceLineIntersectionY, surfaceLine.ReferenceLineIntersectionWorldPoint.Y); Point3D[] geometry = surfaceLine.Points.ToArray(); Assert.AreEqual(2, geometry.Length); Point3D geometryPoint = geometry[0]; Assert.AreSame(geometryPoint, surfaceLine.BottomDitchDikeSide); Assert.AreSame(geometryPoint, surfaceLine.BottomDitchPolderSide); Assert.AreSame(geometryPoint, surfaceLine.DikeToeAtPolder); Assert.AreSame(geometryPoint, surfaceLine.DikeToeAtRiver); Assert.AreSame(geometryPoint, surfaceLine.DitchDikeSide); Assert.AreSame(geometryPoint, surfaceLine.DitchPolderSide); }
public void ReadAsPipingSurfaceLine_PointsXmlEmpty_ThrowsArgumentException() { var entity = new SurfaceLineEntity { Name = "surface line", PointsXml = string.Empty }; // Call TestDelegate call = () => entity.ReadAsPipingSurfaceLine(new ReadConversionCollector()); // Assert string paramName = Assert.Throws <ArgumentException>(call).ParamName; Assert.AreEqual("xml", paramName); }
public void ReadAsPipingSurfaceLine_WithNullValues_ReturnsPipingSurfaceLineWithNaNValues() { // Setup var collector = new ReadConversionCollector(); var point3D = new Point3D(double.NaN, double.NaN, double.NaN); var entity = new SurfaceLineEntity { Name = "name", PointsXml = new Point3DCollectionXmlSerializer().ToXml(new[] { point3D }), PipingCharacteristicPointEntities = { CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.BottomDitchDikeSide), CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.BottomDitchPolderSide), CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.DikeToeAtPolder), CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.DikeToeAtRiver), CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.DitchDikeSide), CreatePipingCharacteristicPointEntity(point3D, PipingCharacteristicPointType.DitchPolderSide) } }; // Call PipingSurfaceLine surfaceLine = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreEqual(entity.Name, surfaceLine.Name); Assert.IsNaN(surfaceLine.ReferenceLineIntersectionWorldPoint.X); Assert.IsNaN(surfaceLine.ReferenceLineIntersectionWorldPoint.Y); Point3D geometryPoint = surfaceLine.Points.Single(); Assert.AreSame(geometryPoint, surfaceLine.BottomDitchDikeSide); Assert.AreSame(geometryPoint, surfaceLine.BottomDitchPolderSide); Assert.AreSame(geometryPoint, surfaceLine.DikeToeAtPolder); Assert.AreSame(geometryPoint, surfaceLine.DikeToeAtRiver); Assert.AreSame(geometryPoint, surfaceLine.DitchDikeSide); Assert.AreSame(geometryPoint, surfaceLine.DitchPolderSide); }
public void ReadAsPipingSurfaceLine_SurfaceLineEntityWithGeometryPointXmlButNoCharacteristicPoints_ReturnSurfaceLineWithGeometry() { // Setup var collector = new ReadConversionCollector(); var random = new Random(31); Point3D[] points = { CreatePoint3D(random), CreatePoint3D(random), CreatePoint3D(random) }; var entity = new SurfaceLineEntity { Name = nameof(SurfaceLineEntity), ReferenceLineIntersectionX = random.NextDouble(), ReferenceLineIntersectionY = random.NextDouble(), PointsXml = new Point3DCollectionXmlSerializer().ToXml(points) }; // Call PipingSurfaceLine surfaceLine = entity.ReadAsPipingSurfaceLine(collector); // Assert Assert.AreEqual(entity.Name, surfaceLine.Name); Assert.AreEqual(entity.ReferenceLineIntersectionX, surfaceLine.ReferenceLineIntersectionWorldPoint.X); Assert.AreEqual(entity.ReferenceLineIntersectionY, surfaceLine.ReferenceLineIntersectionWorldPoint.Y); CollectionAssert.AreEqual(points, surfaceLine.Points); Assert.IsNull(surfaceLine.BottomDitchDikeSide); Assert.IsNull(surfaceLine.BottomDitchPolderSide); Assert.IsNull(surfaceLine.DikeToeAtPolder); Assert.IsNull(surfaceLine.DikeToeAtRiver); Assert.IsNull(surfaceLine.DitchDikeSide); Assert.IsNull(surfaceLine.DitchPolderSide); }