[postgis-commits] svn - r3645 - spike/wktraster/rt_core

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Thu Feb 5 04:01:51 PST 2009


Author: strk
Date: 2009-02-05 04:01:51 -0800 (Thu, 05 Feb 2009)
New Revision: 3645

Modified:
   spike/wktraster/rt_core/rt_api.c
   spike/wktraster/rt_core/testapi.c
Log:
test that trying to set a value of of the valid range for the band pixeltype results in an error

Modified: spike/wktraster/rt_core/rt_api.c
===================================================================
--- spike/wktraster/rt_core/rt_api.c	2009-02-05 07:29:04 UTC (rev 3644)
+++ spike/wktraster/rt_core/rt_api.c	2009-02-05 12:01:51 UTC (rev 3645)
@@ -29,7 +29,7 @@
 #include "rt_api.h"
 
 #define RT_API_DEBUG
-/*#define RT_WARN_ON_TRUNCATION */
+#define RT_WARN_ON_TRUNCATION
 
 /*--- Utilities -------------------------------------------------*/
 
@@ -463,7 +463,6 @@
             uint8_t v = val;
             v &= 15;
             band->nodataval = v;
-            return -1;
             break;
         }
         case PT_8BSI:
@@ -595,7 +594,7 @@
         case PT_8BSI:
         {
             data[offset] = (int8_t)val;
-            checkval = data[offset];
+            checkval = (int8_t)data[offset];
             break;
         }
 
@@ -607,6 +606,13 @@
         }
 
         case PT_16BSI:
+        {
+            int16_t *ptr = (int16_t*)data; /* we assume correct alignment */
+            ptr[offset] = val;
+            checkval = (int16_t)ptr[offset];
+            break;
+        }
+
         case PT_16BUI:
         {
             uint16_t *ptr = (uint16_t*)data; /* we assume correct alignment */
@@ -622,6 +628,13 @@
         }
 
         case PT_32BSI:
+        {
+            int32_t *ptr = (int32_t*)data; /* we assume correct alignment */
+            ptr[offset] = val;
+            checkval = (int32_t)ptr[offset];
+            break;
+        }
+
         case PT_32BUI:
         {
             uint32_t *ptr = (uint32_t*)data; /* we assume correct alignment */
@@ -653,7 +666,7 @@
 #ifdef RT_WARN_ON_TRUNCATION
         ctx->warn("Pixel value for %s band got truncated"
                   " from %g to %u",
-                  rt_pixtype_name(band->pixtype),
+                  rt_pixtype_name(ctx, band->pixtype),
                   val, checkval);
 #endif /* RT_WARN_ON_TRUNCATION */
         return -1;

Modified: spike/wktraster/rt_core/testapi.c
===================================================================
--- spike/wktraster/rt_core/testapi.c	2009-02-05 07:29:04 UTC (rev 3644)
+++ spike/wktraster/rt_core/testapi.c	2009-02-05 12:01:51 UTC (rev 3645)
@@ -88,30 +88,33 @@
 static void testBand2BUI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
+    CHECK(!failure);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
+    CHECK(!failure);
 
-    rt_band_set_nodata(ctx, band, 2);
+    failure = rt_band_set_nodata(ctx, band, 2);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 2);
+    CHECK(!failure);
 
-    rt_band_set_nodata(ctx, band, 3);
+    failure = rt_band_set_nodata(ctx, band, 3);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 3);
+    CHECK(!failure);
 
-    rt_band_set_nodata(ctx, band, 4); /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_nodata(ctx, band, 4); /* invalid: out of range */
+    CHECK(failure);
 
-    rt_band_set_nodata(ctx, band, 5); /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 1);
+    failure = rt_band_set_nodata(ctx, band, 5); /* invalid: out of range */
+    CHECK(failure);
 
     {
         int x, y;
@@ -119,25 +122,26 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
+    CHECK(!failure);
 
-    rt_band_set_pixel(ctx, band, x, y, 2);
+    failure = rt_band_set_pixel(ctx, band, x, y, 2);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 2);
+    CHECK(!failure);
 
-    rt_band_set_pixel(ctx, band, x, y, 3);
+    failure = rt_band_set_pixel(ctx, band, x, y, 3);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 3);
+    CHECK(!failure);
 
-    rt_band_set_pixel(ctx, band, x, y, 4);
-    val =  rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 4); /* out of range */
+    CHECK(failure);
 
-    rt_band_set_pixel(ctx, band, x, y, 5);
-    val =  rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 5); /* out of range */
+    CHECK(failure);
 
             }
         }
@@ -148,38 +152,43 @@
 static void testBand4BUI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
     val = rt_band_get_nodata(ctx, band);
+    CHECK(!failure);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 2);
+    failure = rt_band_set_nodata(ctx, band, 2);
     val = rt_band_get_nodata(ctx, band);
+    CHECK(!failure);
     CHECK_EQUALS(val, 2);
 
-    rt_band_set_nodata(ctx, band, 4); 
+    failure = rt_band_set_nodata(ctx, band, 4); 
     val = rt_band_get_nodata(ctx, band);
+    CHECK(!failure);
     CHECK_EQUALS(val, 4);
 
-    rt_band_set_nodata(ctx, band, 8); 
+    failure = rt_band_set_nodata(ctx, band, 8); 
     val = rt_band_get_nodata(ctx, band);
+    CHECK(!failure);
     CHECK_EQUALS(val, 8);
 
-    rt_band_set_nodata(ctx, band, 15); 
+    failure = rt_band_set_nodata(ctx, band, 15); 
     val = rt_band_get_nodata(ctx, band);
+    CHECK(!failure);
     CHECK_EQUALS(val, 15);
 
-    rt_band_set_nodata(ctx, band, 16);  /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_nodata(ctx, band, 16);  /* out of value range */
+    CHECK(failure);
 
-    rt_band_set_nodata(ctx, band, 17);  /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 1);
+    failure = rt_band_set_nodata(ctx, band, 17);  /* out of value range */
+    CHECK(failure);
 
     {
         int x, y;
@@ -187,25 +196,28 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 3);
+    failure = rt_band_set_pixel(ctx, band, x, y, 3);
+    CHECK(!failure);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 3);
 
-    rt_band_set_pixel(ctx, band, x, y, 7);
+    failure = rt_band_set_pixel(ctx, band, x, y, 7);
+    CHECK(!failure);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 7);
 
-    rt_band_set_pixel(ctx, band, x, y, 15);
+    failure = rt_band_set_pixel(ctx, band, x, y, 15);
+    CHECK(!failure);
     val =  rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 15);
 
-    rt_band_set_pixel(ctx, band, x, y, 35); /* truncates */
-    val =  rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 3);
+    failure = rt_band_set_pixel(ctx, band, x, y, 35); /* out of value range */
+    CHECK(failure);
 
             }
         }
@@ -216,42 +228,50 @@
 static void testBand8BUI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 2);
+    failure = rt_band_set_nodata(ctx, band, 2);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 2);
 
-    rt_band_set_nodata(ctx, band, 4); 
+    failure = rt_band_set_nodata(ctx, band, 4); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 4);
 
-    rt_band_set_nodata(ctx, band, 8); 
+    failure = rt_band_set_nodata(ctx, band, 8); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 8);
 
-    rt_band_set_nodata(ctx, band, 15); 
+    failure = rt_band_set_nodata(ctx, band, 15); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 15);
 
-    rt_band_set_nodata(ctx, band, 31);  
+    failure = rt_band_set_nodata(ctx, band, 31);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_nodata(ctx, band, 255);  
+    failure = rt_band_set_nodata(ctx, band, 255);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_nodata(ctx, band, 256);   /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_nodata(ctx, band, 256); /* out of value range */
+    CHECK(failure);
 
     {
         int x, y;
@@ -259,19 +279,21 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 31);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 31);  
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_pixel(ctx, band, x, y, 255);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 255);  
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_pixel(ctx, band, x, y, 256);   /* truncates */
-    val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 256); /* out of value range */
+    CHECK(failure);
 
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
@@ -283,65 +305,94 @@
 static void testBand8BSI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 2);
+    failure = rt_band_set_nodata(ctx, band, 2);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 2);
 
-    rt_band_set_nodata(ctx, band, 4); 
+    failure = rt_band_set_nodata(ctx, band, 4); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 4);
 
-    rt_band_set_nodata(ctx, band, 8); 
+    failure = rt_band_set_nodata(ctx, band, 8); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 8);
 
-    rt_band_set_nodata(ctx, band, 15); 
+    failure = rt_band_set_nodata(ctx, band, 15); 
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 15);
 
-    rt_band_set_nodata(ctx, band, 31);  
+    failure = rt_band_set_nodata(ctx, band, 31);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_nodata(ctx, band, 255);  
+    failure = rt_band_set_nodata(ctx, band, -127);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, -1);
+    CHECK_EQUALS(val, -127);
 
-    rt_band_set_nodata(ctx, band, 256);   /* truncates */
+    failure = rt_band_set_nodata(ctx, band, 127);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    CHECK_EQUALS(val, 127);
 
+    /* out of range (-127..127) */
+    failure = rt_band_set_nodata(ctx, band, -129);  
+    CHECK(failure);
+
+    /* out of range (-127..127) */
+    failure = rt_band_set_nodata(ctx, band, 129);  
+    CHECK(failure);
+
     {
         int x, y;
         for (x=0; x<rt_band_get_width(ctx, band); ++x)
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 31);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 31);  
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_pixel(ctx, band, x, y, 255);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, -1.0);
+    CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 256);   /* truncates */
+    failure = rt_band_set_pixel(ctx, band, x, y, -127);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    CHECK_EQUALS(val, -127);
 
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 127);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 1);
+    CHECK_EQUALS(val, 127);
 
+    /* out of range (-127..127) */
+    failure = rt_band_set_pixel(ctx, band, x, y, -129);  
+    CHECK(failure);
+
+    /* out of range (-127..127) */
+    failure = rt_band_set_pixel(ctx, band, x, y, 129);  
+    CHECK(failure);
+
             }
         }
     }
@@ -350,31 +401,36 @@
 static void testBand16BUI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 31);  
+    failure = rt_band_set_nodata(ctx, band, 31);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_nodata(ctx, band, 255);  
+    failure = rt_band_set_nodata(ctx, band, 255);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_nodata(ctx, band, 65535);   
+    failure = rt_band_set_nodata(ctx, band, 65535);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_nodata(ctx, band, 65536);   /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_nodata(ctx, band, 65536); /* out of range */
+    CHECK(failure);
 
     {
         int x, y;
@@ -382,17 +438,18 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 255);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 255);  
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535);   
+    failure = rt_band_set_pixel(ctx, band, x, y, 65535);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_pixel(ctx, band, x, y, 65536);   /* truncates */
-    val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 65536); /* out of range */
+    CHECK(failure);
 
             }
         }
@@ -402,50 +459,77 @@
 static void testBand16BSI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 31);  
+    failure = rt_band_set_nodata(ctx, band, 31);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 31);
 
-    rt_band_set_nodata(ctx, band, 255);  
+    failure = rt_band_set_nodata(ctx, band, 255);  
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_nodata(ctx, band, 65535);   
+    failure = rt_band_set_nodata(ctx, band, -32767);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
-    CHECK_EQUALS(val, -1);
+    CHECK_EQUALS(val, -32767);
 
-    rt_band_set_nodata(ctx, band, 65536);   /* truncates */
+    failure = rt_band_set_nodata(ctx, band, 32767);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
+    CHECK_EQUALS(val, 32767);
 
+    /* out of range (-32767..32767) */
+    failure = rt_band_set_nodata(ctx, band, -32769);
+    CHECK(failure);
+
+    /* out of range (-32767..32767) */
+    failure = rt_band_set_nodata(ctx, band, 32769);
+    CHECK(failure);
+
     {
         int x, y;
         for (x=0; x<rt_band_get_width(ctx, band); ++x)
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 255);  
+    failure = rt_band_set_pixel(ctx, band, x, y, 255);  
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 255);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535);   
+    failure = rt_band_set_pixel(ctx, band, x, y, -32767);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, -1);
+    CHECK_EQUALS(val, -32767);
 
-    rt_band_set_pixel(ctx, band, x, y, 65536);   /* truncates */
+    failure = rt_band_set_pixel(ctx, band, x, y, 32767);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    CHECK_EQUALS(val, 32767);
 
+    /* out of range (-32767..32767) */
+    failure = rt_band_set_pixel(ctx, band, x, y, -32769); 
+    CHECK(failure);
+
+    /* out of range (-32767..32767) */
+    failure = rt_band_set_pixel(ctx, band, x, y, 32769); 
+    CHECK(failure);
+
             }
         }
     }
@@ -454,26 +538,31 @@
 static void testBand32BUI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 65535);   
+    failure = rt_band_set_nodata(ctx, band, 65535);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_nodata(ctx, band, 4294967295); 
+    failure = rt_band_set_nodata(ctx, band, 4294967295); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 4294967295);
 
-    rt_band_set_nodata(ctx, band, 4294967296);   /* truncates */
-    val = rt_band_get_nodata(ctx, band);
-    CHECK_EQUALS(val, 0);
+    /* out of range */
+    failure = rt_band_set_nodata(ctx, band, 4294967296);
+    CHECK(failure);
 
     {
         int x, y;
@@ -481,25 +570,29 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 0);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535);   
+    failure = rt_band_set_pixel(ctx, band, x, y, 65535);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_pixel(ctx, band, x, y, 4294967295); 
+    failure = rt_band_set_pixel(ctx, band, x, y, 4294967295); 
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 4294967295);
 
-    rt_band_set_pixel(ctx, band, x, y, 4294967296);   /* truncates */
-    val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, 0);
+    /* out of range */
+    failure = rt_band_set_pixel(ctx, band, x, y, 4294967296);
+    CHECK(failure);
 
             }
         }
@@ -509,28 +602,32 @@
 static void testBand32BSI(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 65535);   
+    failure = rt_band_set_nodata(ctx, band, 65535);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_nodata(ctx, band, 2147483647);
+    failure = rt_band_set_nodata(ctx, band, 2147483647);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     /*printf("32BSI pix is %ld\n", (long int)val);*/
     CHECK_EQUALS(val, 2147483647);
 
-    rt_band_set_nodata(ctx, band, 2147483648); /* swaps sign */
-    val = rt_band_get_nodata(ctx, band);
-    /*printf("32BSI pix is %ld\n", (long int)val);*/
-    CHECK_EQUALS(val, -2147483648);
+    failure = rt_band_set_nodata(ctx, band, 2147483648);
+    /* out of range */
+    CHECK(failure);
 
     {
         int x, y;
@@ -538,25 +635,29 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 0);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535);   
+    failure = rt_band_set_pixel(ctx, band, x, y, 65535);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 65535);
 
-    rt_band_set_pixel(ctx, band, x, y, 2147483647); 
+    failure = rt_band_set_pixel(ctx, band, x, y, 2147483647); 
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 2147483647);
 
-    rt_band_set_pixel(ctx, band, x, y, 2147483648);   /* swaps sign */
-    val = rt_band_get_pixel(ctx, band, x, y);
-    CHECK_EQUALS(val, -2147483648);
+    /* out of range */
+    failure = rt_band_set_pixel(ctx, band, x, y, 2147483648);  
+    CHECK(failure);
 
             }
         }
@@ -571,21 +672,26 @@
 static void testBand32BF(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS_FLOAT(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS_FLOAT(val, 0);
 
-    rt_band_set_nodata(ctx, band, 65535.5);
+    failure = rt_band_set_nodata(ctx, band, 65535.5);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     //printf("set 65535.56 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS_FLOAT(val, 65535.5);
 
-    rt_band_set_nodata(ctx, band, 0.006); 
+    failure = rt_band_set_nodata(ctx, band, 0.006); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS_FLOAT(val, 0.006);
 
@@ -595,19 +701,23 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 0);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535.5);
+    failure = rt_band_set_pixel(ctx, band, x, y, 65535.5);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS_FLOAT(val, 65535.5);
 
-    rt_band_set_pixel(ctx, band, x, y, 0.006); 
+    failure = rt_band_set_pixel(ctx, band, x, y, 0.006); 
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS_FLOAT(val, 0.006);
 
@@ -619,20 +729,25 @@
 static void testBand64BF(rt_context ctx, rt_band band)
 {
     double val;
+    int failure;
 
-    rt_band_set_nodata(ctx, band, 1);
+    failure = rt_band_set_nodata(ctx, band, 1);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_nodata(ctx, band, 0);
+    failure = rt_band_set_nodata(ctx, band, 0);
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_nodata(ctx, band, 65535.56);   
+    failure = rt_band_set_nodata(ctx, band, 65535.56);   
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 65535.56);
 
-    rt_band_set_nodata(ctx, band, 0.006); 
+    failure = rt_band_set_nodata(ctx, band, 0.006); 
+    CHECK(!failure);
     val = rt_band_get_nodata(ctx, band);
     CHECK_EQUALS(val, 0.006);
 
@@ -642,19 +757,23 @@
         {
             for (y=0; y<rt_band_get_height(ctx, band); ++y)
             {
-    rt_band_set_pixel(ctx, band, x, y, 1);
+    failure = rt_band_set_pixel(ctx, band, x, y, 1);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 1);
 
-    rt_band_set_pixel(ctx, band, x, y, 0);
+    failure = rt_band_set_pixel(ctx, band, x, y, 0);
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 0);
 
-    rt_band_set_pixel(ctx, band, x, y, 65535.56);   
+    failure = rt_band_set_pixel(ctx, band, x, y, 65535.56);   
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 65535.56);
 
-    rt_band_set_pixel(ctx, band, x, y, 0.006); 
+    failure = rt_band_set_pixel(ctx, band, x, y, 0.006); 
+    CHECK(!failure);
     val = rt_band_get_pixel(ctx, band, x, y);
     CHECK_EQUALS(val, 0.006);
 



More information about the postgis-commits mailing list