]> granicus.if.org Git - postgis/commitdiff
Added regression test for rt_raster_clone() and added missing SRID copy.
authorBborie Park <bkpark at ucdavis.edu>
Wed, 3 Oct 2012 20:53:15 +0000 (20:53 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Wed, 3 Oct 2012 20:53:15 +0000 (20:53 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@10369 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_core/rt_api.c
raster/test/core/testapi.c

index 5206bf80602ab5e0215180bc9c8f22b5b6fd8a3c..e093d101cc5b177ba80ae956402ae4b44a4c1858 100644 (file)
@@ -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;
 }
index 305bf4aa3840199cda7305a548c25268e0aee577..50f36bb25b08480b6e30b213a99382f7df740a25 100644 (file)
@@ -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;