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);
        }
Example #2
0
        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);
        }
Example #9
0
        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);
                    }
                }
            }
        }