From: Bborie Park Date: Wed, 3 Oct 2012 20:53:15 +0000 (+0000) Subject: Added regression test for rt_raster_clone() and added missing SRID copy. X-Git-Tag: 2.1.0beta2~589 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c9cf073c880692cc767832f1cb656cbaf15a7fc;p=postgis Added regression test for rt_raster_clone() and added missing SRID copy. git-svn-id: http://svn.osgeo.org/postgis/trunk@10369 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/raster/rt_core/rt_api.c b/raster/rt_core/rt_api.c index 5206bf806..e093d101c 100644 --- a/raster/rt_core/rt_api.c +++ b/raster/rt_core/rt_api.c @@ -8313,6 +8313,7 @@ rt_raster_clone(rt_raster raster, uint8_t deep) { rt_raster_get_geotransform_matrix(raster, gt); rt_raster_set_geotransform_matrix(rtn, gt); + rt_raster_set_srid(rtn, rt_raster_get_srid(raster)); return rtn; } diff --git a/raster/test/core/testapi.c b/raster/test/core/testapi.c index 305bf4aa3..50f36bb25 100644 --- a/raster/test/core/testapi.c +++ b/raster/test/core/testapi.c @@ -8045,6 +8045,50 @@ static void testRasterIterator() { if (rtn != NULL) deepRelease(rtn); } +static void testRasterClone() { + rt_raster rast1; + rt_raster rast2; + rt_band band; + + int maxX = 5; + int maxY = 5; + double gt[6]; + + rast1 = rt_raster_new(maxX, maxY); + assert(rast1); + + rt_raster_set_offsets(rast1, 0, 0); + rt_raster_set_scale(rast1, 1, -1); + rt_raster_set_srid(rast1, 4326); + + band = addBand(rast1, PT_32BUI, 1, 6); + CHECK(band); + + /* clone without bands */ + rast2 = rt_raster_clone(rast1, 0); + CHECK(rast2); + CHECK((rt_raster_get_num_bands(rast2) == 0)); + + rt_raster_get_geotransform_matrix(rast2, gt); + CHECK((rt_raster_get_srid(rast2) == 4326)); + CHECK((FLT_EQ(gt[0], 0))); + CHECK((FLT_EQ(gt[1], 1))); + CHECK((FLT_EQ(gt[2], 0))); + CHECK((FLT_EQ(gt[3], 0))); + CHECK((FLT_EQ(gt[4], 0))); + CHECK((FLT_EQ(gt[5], -1))); + + deepRelease(rast2); + + /* clone with bands */ + rast2 = rt_raster_clone(rast1, 1); + CHECK(rast2); + CHECK((rt_raster_get_num_bands(rast2) == 1)); + + deepRelease(rast2); + deepRelease(rast1); +} + int main() { @@ -8363,6 +8407,10 @@ main() testRasterIterator(); printf("OK\n"); + printf("Test rt_raster_clone... "); + testRasterClone(); + printf("OK\n"); + deepRelease(raster); return EXIT_SUCCESS;