private List <RasterData <StringRepresentation, string> > GetStringValues(SerializableReferenceLayer serializableReferenceLayer) { var values = serializableReferenceLayer.StringValues; if (values == null || !values.Any()) { return(null); } var rowCount = serializableReferenceLayer.RasterReferenceLayer.RowCount; var columnCount = serializableReferenceLayer.RasterReferenceLayer.ColumnCount; var data = new List <RasterData <StringRepresentation, string> >(); foreach (var value in values) { var list = new string[columnCount, rowCount]; for (int i = 0; i < columnCount; i++) { for (int j = 0; j < rowCount; j++) { list[i, j] = value.values[i * rowCount + j]; } } data.Add(new RasterData <StringRepresentation, string> { Values = list, Representation = value.Representation as StringRepresentation }); } return(data); }
public void GivenFilenameWhenImportThenMultipleReferenceLayersReturned() { const string filename = "file.bin"; var output = Path.Combine(_filepath, filename); File.Create(output).Close(); var serializableReferenceLayer = new SerializableReferenceLayer(); var serializableReferenceLayer2 = new SerializableReferenceLayer(); _serializerMock.Setup(x => x.Read <List <SerializableReferenceLayer> >(output)).Returns(new List <SerializableReferenceLayer> { serializableReferenceLayer, serializableReferenceLayer2 }); var rasterReferenceLayer = new RasterReferenceLayer { Description = "woopwoopwoop" }; var rasterReferenceLayer2 = new RasterReferenceLayer { Description = "nopenopenope" }; _converterMock.Setup(x => x.ConvertToReferenceLayer(serializableReferenceLayer)).Returns(rasterReferenceLayer); _converterMock.Setup(x => x.ConvertToReferenceLayer(serializableReferenceLayer2)).Returns(rasterReferenceLayer2); var result = _serializer.Import(_filepath, filename).ToList(); Assert.AreEqual(rasterReferenceLayer.Description, result[0].Description); Assert.AreEqual(rasterReferenceLayer2.Description, result[1].Description); }
public void GivenFilenameWhenImportThenMultipleReferenceLayersReturned() { var output = Path.Combine(_filepath, DatacardConstants.ReferenceLayersFile); File.Create(output).Close(); var serializableReferenceLayer = new SerializableReferenceLayer(); var serializableReferenceLayer2 = new SerializableReferenceLayer(); _baseSerializerMock.Setup(x => x.Deserialize <List <SerializableReferenceLayer> >(output)).Returns(new List <SerializableReferenceLayer> { serializableReferenceLayer, serializableReferenceLayer2 }); var rasterReferenceLayer = new RasterReferenceLayer { Description = "woopwoopwoop" }; var rasterReferenceLayer2 = new RasterReferenceLayer { Description = "nopenopenope" }; _converterMock.Setup(x => x.ConvertToReferenceLayer(serializableReferenceLayer)).Returns(rasterReferenceLayer); _converterMock.Setup(x => x.ConvertToReferenceLayer(serializableReferenceLayer2)).Returns(rasterReferenceLayer2); var serializer = new ReferenceLayersSerializer(_converterMock.Object); var result = serializer.Deserialize(_baseSerializerMock.Object, _filepath).ToList(); Assert.AreEqual(rasterReferenceLayer.Description, result[0].Description); Assert.AreEqual(rasterReferenceLayer2.Description, result[1].Description); }
public void GivenSerializedRasterLayerWhenConvertToReferenceLayerThenStringValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer(); serialzedReferenceLayer.StringValues = new List <SerializableRasterData <string> > { new SerializableRasterData <string> { values = new List <string> { "one", "two", "three", "four", "five", "six" } } }; serialzedReferenceLayer.ReferenceLayer = _referenceLayer; _referenceLayer.StringRasterValues = null; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; var expected = new[, ] { { "one", "two" }, { "three", "four" }, { "five", "six" } }; for (int i = 0; i < _referenceLayer.ColumnCount; i++) { for (int j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(expected[i, j], referenceLayer.StringRasterValues.First().Values[i, j]); } } }
public ReferenceLayer ConvertToReferenceLayer(SerializableReferenceLayer serializableReferenceLayer) { if (serializableReferenceLayer.RasterReferenceLayer != null) { var convertToReferenceLayer = serializableReferenceLayer.RasterReferenceLayer; convertToReferenceLayer.StringRasterValues = GetStringValues(serializableReferenceLayer); convertToReferenceLayer.EnumeratedRasterValues = GetEnumeratedValues(serializableReferenceLayer); convertToReferenceLayer.NumericRasterValues = GetNumericValues(serializableReferenceLayer); return(convertToReferenceLayer); } if (serializableReferenceLayer.ShapeReferenceLayer != null) { var convertToShapeReferenceLayer = serializableReferenceLayer.ShapeReferenceLayer; if (serializableReferenceLayer.ShapeLookupValues == null || !serializableReferenceLayer.ShapeLookupValues.Any()) { return(convertToShapeReferenceLayer); } convertToShapeReferenceLayer.ShapeLookups = serializableReferenceLayer.ShapeLookupValues.Where(a => a.shapeLookups != null).SelectMany(a => a.shapeLookups).ToList(); return(convertToShapeReferenceLayer); } return(null); }
public void GivenSerializableReferenceLayerWithMultiPointWhenConvertoReferenceLayerThenIsConverted() { var serializedReferenceLayer = new SerializableReferenceLayer(); var point1 = new Point { X = 5, Y = 5, Z = 5 }; var point2 = new Point { X = 10, Y = 10, Z = 10 }; serializedReferenceLayer.ShapeLookupValues = new List <SerializableShapeData> { new SerializableShapeData { shapeLookups = new List <ShapeLookup> { new ShapeLookup { Shape = new MultiPoint { Id = 1, Points = new List <Point> { point1, point2 } } } } } }; serializedReferenceLayer.ShapeReferenceLayer = _shapeReferenceLayer; var result = _converter.ConvertToReferenceLayer(serializedReferenceLayer) as ShapeReferenceLayer; var multiPoint = result.ShapeLookups.First().Shape; Assert.IsInstanceOf(typeof(MultiPoint), multiPoint); Assert.IsInstanceOf(typeof(ShapeReferenceLayer), result); }
public void GivenSerializedRasterLayersWhenConvertToReferenceLayerThenNumericValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer { NumericValueValues = new List <SerializableRasterData <NumericValue> > { new SerializableRasterData <NumericValue> { values = new List <NumericValue> { new NumericValue(new UnitOfMeasure(), 1), new NumericValue(new UnitOfMeasure(), 2), new NumericValue(new UnitOfMeasure(), 3), new NumericValue(new UnitOfMeasure(), 4), new NumericValue(new UnitOfMeasure(), 5), new NumericValue(new UnitOfMeasure(), 6) } }, new SerializableRasterData <NumericValue> { values = new List <NumericValue> { new NumericValue(new UnitOfMeasure(), 7), new NumericValue(new UnitOfMeasure(), 8), new NumericValue(new UnitOfMeasure(), 9), new NumericValue(new UnitOfMeasure(), 10), new NumericValue(new UnitOfMeasure(), 11), new NumericValue(new UnitOfMeasure(), 14) } }, }, ReferenceLayer = _referenceLayer }; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; for (int layerIndex = 0; layerIndex < serialzedReferenceLayer.NumericValueValues.Count; layerIndex++) { var serializedLayer = serialzedReferenceLayer.NumericValueValues[layerIndex]; var referenceData = referenceLayer.NumericRasterValues[layerIndex]; for (int i = 0; i < _referenceLayer.ColumnCount; i++) { for (int j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(serializedLayer.values[(i * _referenceLayer.RowCount) + j].Value, referenceData.Values[i, j].Value); } } } }
public void GivenSerializableReferenceLayerWithEmptyShapeLookUpsValuesWhenConvertoReferenceLayerThenIsNotConverted() { var serializedReferenceLayer = new SerializableReferenceLayer { ShapeReferenceLayer = _shapeReferenceLayer, ShapeLookupValues = new List <SerializableShapeData>() }; var result = _converter.ConvertToReferenceLayer(serializedReferenceLayer) as ShapeReferenceLayer; Assert.IsEmpty(result.ShapeLookups); }
public void GivenFilenameAndRefenceLayerWhenExportThenSeralizableReferenceLayersAreSerialized() { const string filename = "file.bin"; var output = Path.Combine(_filepath, filename); _referenceLayers.Add(new RasterReferenceLayer()); var serializableReferenceLayer = new SerializableReferenceLayer(); _converterMock.Setup(x => x.ConvertToSerializableReferenceLayer(_referenceLayers.First())).Returns(serializableReferenceLayer); _serializer.Export(_filepath, "file.bin", _referenceLayers); _serializerMock.Verify(x => x.Write(output, new List <SerializableReferenceLayer> { serializableReferenceLayer }), Times.Once); }
public void GivenFilenameAndRefenceLayerWhenExportThenSeralizableReferenceLayersAreSerialized() { var output = Path.Combine(_filepath, DatacardConstants.ReferenceLayersFile); _referenceLayers.Add(new RasterReferenceLayer()); var serializableReferenceLayer = new SerializableReferenceLayer(); _converterMock.Setup(x => x.ConvertToSerializableReferenceLayer(_referenceLayers.First())).Returns(serializableReferenceLayer); var serializer = new ReferenceLayersSerializer(_converterMock.Object); serializer.Serialize(_baseSerializerMock.Object, _referenceLayers, _filepath); _baseSerializerMock.Verify(x => x.Serialize(new List <SerializableReferenceLayer> { serializableReferenceLayer }, output), Times.Once); }
public void GivenSerializedRasterLayerWhenConvertToReferenceLayerThenEnumeratedValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer(); serialzedReferenceLayer.EnumerationMemberValues = new List <SerializableRasterData <EnumerationMember> > { new SerializableRasterData <EnumerationMember> { values = new List <EnumerationMember> { new EnumerationMember { Value = "one" }, new EnumerationMember { Value = "two" }, new EnumerationMember { Value = "three" }, new EnumerationMember { Value = "four" }, new EnumerationMember { Value = "five" }, new EnumerationMember { Value = "six" } } } }; serialzedReferenceLayer.ReferenceLayer = _referenceLayer; _referenceLayer.EnumeratedRasterValues = null; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; var expected = new[, ] { { "one", "two" }, { "three", "four" }, { "five", "six" } }; for (var i = 0; i < _referenceLayer.ColumnCount; i++) { for (var j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(expected[i, j], referenceLayer.EnumeratedRasterValues.First().Values[i, j].Value); } } }
public void GivenSerializedRasterLayesrWhenConvertToReferenceLayerThenStringValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer { StringValues = new List <SerializableRasterData <string> > { new SerializableRasterData <string> { values = new List <string> { "one", "two", "three", "four", "five", "six" } }, new SerializableRasterData <string> { values = new List <string> { "11", "12", "13", "14", "15", "16" } } }, ReferenceLayer = _referenceLayer }; _referenceLayer.StringRasterValues = null; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; for (int rasterDataIndex = 0; rasterDataIndex < serialzedReferenceLayer.StringValues.Count; rasterDataIndex++) { var serializableData = serialzedReferenceLayer.StringValues[rasterDataIndex]; var referenceLayerData = referenceLayer.StringRasterValues[rasterDataIndex]; for (int i = 0; i < _referenceLayer.ColumnCount; i++) { for (int j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(serializableData.values[(i * _referenceLayer.RowCount) + j], referenceLayerData.Values[i, j]); } } } }
public void GivenSerializedRasterLayesrWhenConvertToReferenceLayerThenEnumeratedRepresentationsAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer(); var numericRepresentation1 = new EnumeratedRepresentation { Description = "First One", Code = "Code1", CodeSource = RepresentationCodeSourceEnum.ISO11783_DDI, LongDescription = "Long Description 1" }; var numericRepresentation2 = new EnumeratedRepresentation { Description = "Second One", Code = "Code2", CodeSource = RepresentationCodeSourceEnum.ADAPT, LongDescription = "Long Description 2" }; serialzedReferenceLayer.EnumerationMemberValues = new List <SerializableRasterData <EnumerationMember> > { new SerializableRasterData <EnumerationMember> { Representation = numericRepresentation1 }, new SerializableRasterData <EnumerationMember> { Representation = numericRepresentation2 } }; serialzedReferenceLayer.ReferenceLayer = _referenceLayer; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; for (int rasterDataIndex = 0; rasterDataIndex < serialzedReferenceLayer.EnumerationMemberValues.Count; rasterDataIndex++) { var serializableData = serialzedReferenceLayer.EnumerationMemberValues[rasterDataIndex]; var referenceLayerData = referenceLayer.EnumeratedRasterValues[rasterDataIndex]; Assert.AreSame(serializableData.Representation, referenceLayerData.Representation); } }
public void GivenSerializedRasterLayerWhenConvertToReferenceLayerThenNumericValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer { NumericValueValues = new List <SerializableRasterData <NumericValue> > { new SerializableRasterData <NumericValue> { values = new List <NumericValue> { new NumericValue(new UnitOfMeasure(), 1), new NumericValue(new UnitOfMeasure(), 2), new NumericValue(new UnitOfMeasure(), 3), new NumericValue(new UnitOfMeasure(), 4), new NumericValue(new UnitOfMeasure(), 5), new NumericValue(new UnitOfMeasure(), 6) } } }, ReferenceLayer = _referenceLayer }; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; var expected = new[, ] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; for (int i = 0; i < _referenceLayer.ColumnCount; i++) { for (int j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(expected[i, j], referenceLayer.NumericRasterValues.First().Values[i, j].Value); } } }
public void GivenSerializableReferenceLayerWithPolygonWhenConvertoReferenceLayerThenIsConverted() { var serializedReferenceLayer = new SerializableReferenceLayer(); var point1 = new Point { X = 5, Y = 5, Z = 5 }; var point2 = new Point { X = 10, Y = 10, Z = 10 }; var polygon = new Polygon { ExteriorRing = new LinearRing { Id = 1, Points = new List <Point> { point1, point2 } } }; serializedReferenceLayer.ShapeLookupValues = new List <SerializableShapeData> { new SerializableShapeData { shapeLookups = new List <ShapeLookup> { new ShapeLookup { Shape = polygon } } } }; serializedReferenceLayer.ShapeReferenceLayer = _shapeReferenceLayer; var result = _converter.ConvertToReferenceLayer(serializedReferenceLayer) as ShapeReferenceLayer; var actualPolygon = result.ShapeLookups.First().Shape; Assert.IsInstanceOf(typeof(Polygon), actualPolygon); Assert.IsInstanceOf(typeof(ShapeReferenceLayer), result); }
public void GivenSerializedRasterLayersWhenConvertToReferenceLayerThenEnumeratedValuesAreConverted() { var serialzedReferenceLayer = new SerializableReferenceLayer { EnumerationMemberValues = new List <SerializableRasterData <EnumerationMember> > { new SerializableRasterData <EnumerationMember> { values = new List <EnumerationMember> { new EnumerationMember { Value = "one" }, new EnumerationMember { Value = "two" }, new EnumerationMember { Value = "three" }, new EnumerationMember { Value = "four" }, new EnumerationMember { Value = "five" }, new EnumerationMember { Value = "six" } } }, new SerializableRasterData <EnumerationMember> { values = new List <EnumerationMember> { new EnumerationMember { Value = "1" }, new EnumerationMember { Value = "2" }, new EnumerationMember { Value = "3" }, new EnumerationMember { Value = "4" }, new EnumerationMember { Value = "5" }, new EnumerationMember { Value = "6" } } } }, ReferenceLayer = _referenceLayer }; _referenceLayer.EnumeratedRasterValues = null; _referenceLayer.ColumnCount = 3; _referenceLayer.RowCount = 2; var referenceLayer = _converter.ConvertToReferenceLayer(serialzedReferenceLayer) as RasterReferenceLayer; for (int layerIndex = 0; layerIndex < serialzedReferenceLayer.EnumerationMemberValues.Count; layerIndex++) { var serializedLayer = serialzedReferenceLayer.EnumerationMemberValues[layerIndex]; var referenceData = referenceLayer.EnumeratedRasterValues[layerIndex]; for (int i = 0; i < _referenceLayer.ColumnCount; i++) { for (int j = 0; j < _referenceLayer.RowCount; j++) { Assert.AreEqual(serializedLayer.values[(i * _referenceLayer.RowCount) + j].Value, referenceData.Values[i, j].Value); } } } }