Example #1
0
        public void ProxyRasterConstructorTest()
        {
            // successful construction without spectral ranges and mapping
            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            Assert.IsFalse(raster.IsMapped);
            Assert.IsNull(raster.Mapper);
            Assert.IsTrue(raster.Coordinates.All(coordinate => !coordinate.IsValid));

            Assert.AreEqual(_service.Object.IsReadable, raster.IsReadable);
            Assert.AreEqual(_service.Object.IsWritable, raster.IsWritable);
            Assert.AreEqual(_service.Object.Dimensions, raster.Dimensions);
            Assert.AreEqual(_service.Object.Format, raster.Format);
            Assert.AreEqual(_service.Object.Dimensions.NumberOfBands, raster.NumberOfBands);
            Assert.AreEqual(_service.Object.Dimensions.NumberOfBands, raster.Bands.Count);
            Assert.AreEqual(_factory.Object, raster.Factory);

            // successful construction with mapping

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);
            Assert.IsTrue(raster.IsMapped);
            Assert.AreEqual(mapper, raster.Mapper);
            Assert.AreEqual(new Coordinate(1000, 1200), raster.Coordinates[0]);
            Assert.AreEqual(new Coordinate(1150, 1200), raster.Coordinates[1]);
            Assert.AreEqual(new Coordinate(1150, 1000), raster.Coordinates[2]);
            Assert.AreEqual(new Coordinate(1000, 1000), raster.Coordinates[3]);

            // argument null exception

            Assert.Throws <ArgumentNullException>(() => { raster = new ProxyRaster(_factory.Object, null, null); });
        }
Example #2
0
        public void ProxyRasterSetValuesTest()
        {
            _service.Setup(entity => entity.WriteValueSequence(It.IsInRange(0, 19, Moq.Range.Inclusive),
                                                               It.IsInRange(0, 14, Moq.Range.Inclusive),
                                                               It.IsInRange(0, 2, Moq.Range.Inclusive), It.IsAny <UInt32[]>()))
            .Callback(new Action <Int32, Int32, Int32, UInt32[]>((rowIndex, columnIndex, bandIndex, values) => Assert.IsTrue(values.SequenceEqual(new UInt32[] { 0, 1, 2 }))));

            // test case 1: index based

            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            for (Int32 j = 0; j < raster.NumberOfRows; j += 5)
            {
                for (Int32 k = 0; k < raster.NumberOfColumns; k += 5)
                {
                    raster.SetValues(j, k, new UInt32[] { 0, 1, 2 });
                }
            }

            // test case 2: coordinate based

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsCoordinate, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);

            for (Int32 x = 1000; x < 1000 + 10 * _service.Object.Dimensions.NumberOfColumns; x += 100)
            {
                for (Int32 y = 1000; y < 1000 + 10 * _service.Object.Dimensions.NumberOfRows; y += 100)
                {
                    raster.SetValues(new Coordinate(x, y), new UInt32[] { 0, 1, 2 });
                    raster[new Coordinate(x, y)] = new UInt32[] { 0, 1, 2 };
                }
            }
        }
Example #3
0
        public void ProxyRasterGetValuesTest()
        {
            // index based

            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            for (Int32 j = 0; j < raster.NumberOfRows; j += 5)
            {
                for (Int32 k = 0; k < raster.NumberOfColumns; k += 5)
                {
                    Assert.IsTrue(_service.Object.ReadValueSequence(j, k, 0, 3).SequenceEqual(raster.GetValues(j, k)));
                    Assert.IsTrue(_service.Object.ReadValueSequence(j, k, 0, 3).SequenceEqual(raster[j, k]));
                }
            }

            // coordinate based

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsCoordinate, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);

            for (Int32 x = 1000; x < 1000 + 10 * _service.Object.Dimensions.NumberOfColumns; x += 100)
            {
                for (Int32 y = 1000; y < 1000 + 10 * _service.Object.Dimensions.NumberOfRows; y += 100)
                {
                    Assert.IsTrue(_service.Object.ReadValueSequence((x - 1000) / 10, (y - 1000) / 10, 0, 3).SequenceEqual(raster.GetValues(new Coordinate(x, y))));
                    Assert.IsTrue(_service.Object.ReadValueSequence((x - 1000) / 10, (y - 1000) / 10, 0, 3).SequenceEqual(raster[new Coordinate(x, y)]));
                }
            }
        }
Example #4
0
        public void ProxyRasterSetValueTest()
        {
            for (Int32 i = 0; i < 3; i++)
            {
                _service.Setup(entity => entity.WriteValue(It.IsInRange(0, 19, Moq.Range.Inclusive),
                                                           It.IsInRange(0, 14, Moq.Range.Inclusive),
                                                           i, It.IsAny <UInt32>()))
                .Callback(new Action <Int32, Int32, Int32, UInt32>((rowIndex, columnIndex, bandIndex, value) => Assert.AreEqual(bandIndex, value, 0)));
            }

            // test case 1: index based

            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            for (Int32 i = 0; i < raster.NumberOfBands; i++)
            {
                for (Int32 j = 0; j < raster.NumberOfRows; j += 5)
                {
                    for (Int32 k = 0; k < raster.NumberOfColumns; k += 5)
                    {
                        raster.SetValue(j, k, i, (UInt32)i);
                        raster[j, k, i] = (UInt32)i;
                    }
                }
            }

            // test case 2: coordinate based

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsCoordinate, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);

            for (Int32 i = 0; i < raster.NumberOfBands; i++)
            {
                for (Int32 x = 1000; x < 1000 + 10 * _service.Object.Dimensions.NumberOfColumns; x += 100)
                {
                    for (Int32 y = 1000; y < 1000 + 10 * _service.Object.Dimensions.NumberOfRows; y += 100)
                    {
                        raster.SetValue(new Coordinate(x, y), i, (UInt32)i);
                        raster[new Coordinate(x, y), i] = (UInt32)i;
                    }
                }
            }
        }
Example #5
0
        public void ProxyRasterGetValueTest()
        {
            // index based

            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            for (Int32 i = -1; i <= raster.NumberOfBands; i++)
            {
                for (Int32 j = -1; j <= raster.NumberOfRows + 5; j += 5)
                {
                    for (Int32 k = -1; k <= raster.NumberOfColumns + 5; k += 5)
                    {
                        try
                        {
                            Assert.AreEqual(_service.Object.ReadValue(j, k, i), raster.GetValue(j, k, i));
                            Assert.AreEqual(_service.Object.ReadValue(j, k, i), raster[j, k, i]);
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            Assert.IsTrue(i < 0 || i >= raster.NumberOfBands ||
                                          j < 0 || j >= raster.NumberOfRows ||
                                          k < 0 || k >= raster.NumberOfColumns);
                        }
                    }
                }
            }

            // coordinate based

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsCoordinate, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);

            for (Int32 x = 1000; x < 1000 + 10 * _service.Object.Dimensions.NumberOfColumns; x += 100)
            {
                for (Int32 y = 1000; y < 1000 + 10 * _service.Object.Dimensions.NumberOfRows; y += 100)
                {
                    Assert.AreEqual(_service.Object.ReadValue((x - 1000) / 10, (y - 1000) / 10, 0), raster.GetValue(new Coordinate(x, y), 0));
                    Assert.AreEqual(_service.Object.ReadValue((x - 1000) / 10, (y - 1000) / 10, 0), raster[new Coordinate(x, y), 0]);
                }
            }
        }
Example #6
0
        public void ProxyRasterNearestValueTest()
        {
            // test case 1: index based

            ProxyRaster raster = new ProxyRaster(_factory.Object, _service.Object, null);

            for (Int32 i = 0; i < raster.NumberOfBands; i++)
            {
                for (Int32 j = -1; j <= raster.NumberOfRows + 5; j += 5)
                {
                    for (Int32 k = -1; k <= raster.NumberOfColumns + 5; k += 5)
                    {
                        Assert.AreEqual(_service.Object.ReadValue(Math.Max(0, Math.Min(j, _service.Object.Dimensions.NumberOfRows - 1)),
                                                                  Math.Max(0, Math.Min(j, _service.Object.Dimensions.NumberOfColumns - 1)), i),
                                        raster.GetNearestValue(j, k, i));
                    }
                }
            }

            // test case 2: coordinate based

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsCoordinate, 1000, 1000, 0, 10, 10, 1);

            raster = new ProxyRaster(_factory.Object, _service.Object, mapper);

            for (Int32 i = 0; i < raster.NumberOfBands; i++)
            {
                for (Int32 x = 1000; x < 1000 + 10 * _service.Object.Dimensions.NumberOfColumns; x += 100)
                {
                    for (Int32 y = 1000; y < 1000 + 10 * _service.Object.Dimensions.NumberOfRows; y += 100)
                    {
                        Assert.AreEqual(_service.Object.ReadValue(Math.Max(0, Math.Min((x - 1000) / 10, _service.Object.Dimensions.NumberOfRows - 1)),
                                                                  Math.Max(0, Math.Min((y - 1000) / 10, _service.Object.Dimensions.NumberOfColumns - 1)), i),
                                        raster.GetNearestValue(new Coordinate(x, y), i));
                    }
                }
            }
        }