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

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Mon Feb 2 05:50:53 PST 2009


Author: strk
Date: 2009-02-02 05:50:52 -0800 (Mon, 02 Feb 2009)
New Revision: 3609

Added:
   spike/wktraster/rt_core/testwkb.c
Log:
forgot to svn add this..

Added: spike/wktraster/rt_core/testwkb.c
===================================================================
--- spike/wktraster/rt_core/testwkb.c	2009-02-02 13:50:15 UTC (rev 3608)
+++ spike/wktraster/rt_core/testwkb.c	2009-02-02 13:50:52 UTC (rev 3609)
@@ -0,0 +1,184 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include <math.h> /* for fabs */
+
+#include "rt_api.h"
+#include "check.h"
+
+
+int
+main()
+{
+    /* will use default allocators and message handlers */
+    rt_context ctx;
+    rt_raster raster;
+    const char* hexwkb;
+    ctx = rt_context_new(0, 0, 0);
+
+    /* ------------------------------------------------------ */
+
+    hexwkb =
+"01"               /* little endian (uint8 ndr) */
+"0000"             /* version (uint16 0) */
+"0000"             /* nBands (uint16 0) */
+"000000000000F03F" /* scaleX (float64 1) */
+"0000000000000040" /* scaleY (float64 2) */
+"0000000000000840" /* ipX (float64 3) */
+"0000000000001040" /* ipY (float64 4) */
+"0000000000001440" /* skewX (float64 5) */
+"0000000000001840" /* skewY (float64 6) */
+"0A000000"         /* SRID (int32 10) */
+"0700"             /* width (uint16 7) */
+"0800"             /* height (uint16 8) */
+    ;
+
+    raster = rt_raster_from_hexwkb(ctx, hexwkb, strlen(hexwkb));
+    CHECK(raster);
+    CHECK_EQUALS(rt_raster_get_num_bands(ctx, raster), 0);
+    CHECK_EQUALS(rt_raster_get_pixel_width(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_height(ctx, raster), 2);
+    CHECK_EQUALS(rt_raster_get_x_offset(ctx, raster), 3);
+    CHECK_EQUALS(rt_raster_get_y_offset(ctx, raster), 4);
+    CHECK_EQUALS(rt_raster_get_x_rotation(ctx, raster), 5);
+    CHECK_EQUALS(rt_raster_get_y_rotation(ctx, raster), 6);
+    CHECK_EQUALS(rt_raster_get_srid(ctx, raster), 10);
+    CHECK_EQUALS(rt_raster_get_width(ctx, raster), 7);
+    CHECK_EQUALS(rt_raster_get_height(ctx, raster), 8);
+
+    /* ------------------------------------------------------ */
+
+    hexwkb =
+"00"               /* big endian (uint8 xdr) */
+"0000"             /* version (uint16 0) */
+"0000"             /* nBands (uint16 0) */
+"3FF0000000000000" /* scaleX (float64 1) */
+"4000000000000000" /* scaleY (float64 2) */
+"4008000000000000" /* ipX (float64 3) */
+"4010000000000000" /* ipY (float64 4) */
+"4014000000000000" /* skewX (float64 5) */
+"4018000000000000" /* skewY (float64 6) */
+"0000000A"         /* SRID (int32 10) */
+"0007"             /* width (uint16 7) */
+"0008"             /* height (uint16 8) */
+    ;
+
+    raster = rt_raster_from_hexwkb(ctx, hexwkb, strlen(hexwkb));
+    CHECK(raster);
+    CHECK_EQUALS(rt_raster_get_num_bands(ctx, raster), 0);
+    CHECK_EQUALS(rt_raster_get_pixel_width(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_height(ctx, raster), 2);
+    CHECK_EQUALS(rt_raster_get_x_offset(ctx, raster), 3);
+    CHECK_EQUALS(rt_raster_get_y_offset(ctx, raster), 4);
+    CHECK_EQUALS(rt_raster_get_x_rotation(ctx, raster), 5);
+    CHECK_EQUALS(rt_raster_get_y_rotation(ctx, raster), 6);
+    CHECK_EQUALS(rt_raster_get_srid(ctx, raster), 10);
+    CHECK_EQUALS(rt_raster_get_width(ctx, raster), 7);
+    CHECK_EQUALS(rt_raster_get_height(ctx, raster), 8);
+
+    /* ------------------------------------------------------ */
+
+    hexwkb =
+"01"               /* little endian (uint8 ndr) */
+"0000"             /* version (uint16 0) */
+"0100"             /* nBands (uint16 1) */
+"000000000000F03F" /* scaleX (float64 1) */
+"0000000000000040" /* scaleY (float64 2) */
+"0000000000000840" /* ipX (float64 3) */
+"0000000000001040" /* ipY (float64 4) */
+"0000000000001440" /* skewX (float64 5) */
+"0000000000001840" /* skewY (float64 6) */
+"0A000000"         /* SRID (int32 10) */
+"0100"             /* width (uint16 1) */
+"0100"             /* height (uint16 1) */
+"00"               /* First band type (1BB, in memory) */
+"00"               /* nodata value (0) */
+"01"               /* pix(0,0) == 1 */
+    ;
+
+    raster = rt_raster_from_hexwkb(ctx, hexwkb, strlen(hexwkb));
+    CHECK(raster);
+    CHECK_EQUALS(rt_raster_get_num_bands(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_width(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_height(ctx, raster), 2);
+    CHECK_EQUALS(rt_raster_get_x_offset(ctx, raster), 3);
+    CHECK_EQUALS(rt_raster_get_y_offset(ctx, raster), 4);
+    CHECK_EQUALS(rt_raster_get_x_rotation(ctx, raster), 5);
+    CHECK_EQUALS(rt_raster_get_y_rotation(ctx, raster), 6);
+    CHECK_EQUALS(rt_raster_get_srid(ctx, raster), 10);
+    CHECK_EQUALS(rt_raster_get_width(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_height(ctx, raster), 1);
+    {
+        rt_band band = rt_raster_get_band(ctx, raster, 0);
+        CHECK(band);
+        CHECK_EQUALS(rt_band_get_pixtype(ctx, band), PT_1BB);
+        CHECK(!rt_band_is_offline(ctx, band));
+        CHECK_EQUALS(rt_band_get_nodata(ctx, band), 0);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 0, 0), 1);
+    }
+
+    /* ------------------------------------------------------ */
+
+    hexwkb =
+"01"               /* little endian (uint8 ndr) */
+"0000"             /* version (uint16 0) */
+"0100"             /* nBands (uint16 1) */
+"000000000000F03F" /* scaleX (float64 1) */
+"0000000000000040" /* scaleY (float64 2) */
+"0000000000000840" /* ipX (float64 3) */
+"0000000000001040" /* ipY (float64 4) */
+"0000000000001440" /* skewX (float64 5) */
+"0000000000001840" /* skewY (float64 6) */
+"0A000000"         /* SRID (int32 10) */
+"0300"             /* width (uint16 3) */
+"0200"             /* height (uint16 2) */
+"03"               /* First band type (8BSI, in memory) */
+"FF"               /* nodata value (-1) */
+"FF"               /* pix(0,0) == -1 */
+"00"               /* pix(1,0) ==  0 */
+"01"               /* pix(2,0) == 1 */
+"7F"               /* pix(0,1) == 127 */
+"0A"               /* pix(1,1) == 10 */
+"02"               /* pix(2,1) == 2 */
+    ;
+
+    raster = rt_raster_from_hexwkb(ctx, hexwkb, strlen(hexwkb));
+    CHECK(raster);
+    CHECK_EQUALS(rt_raster_get_num_bands(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_width(ctx, raster), 1);
+    CHECK_EQUALS(rt_raster_get_pixel_height(ctx, raster), 2);
+    CHECK_EQUALS(rt_raster_get_x_offset(ctx, raster), 3);
+    CHECK_EQUALS(rt_raster_get_y_offset(ctx, raster), 4);
+    CHECK_EQUALS(rt_raster_get_x_rotation(ctx, raster), 5);
+    CHECK_EQUALS(rt_raster_get_y_rotation(ctx, raster), 6);
+    CHECK_EQUALS(rt_raster_get_srid(ctx, raster), 10);
+    CHECK_EQUALS(rt_raster_get_width(ctx, raster), 3);
+    CHECK_EQUALS(rt_raster_get_height(ctx, raster), 2);
+    {
+        rt_band band = rt_raster_get_band(ctx, raster, 0);
+        CHECK(band);
+        CHECK_EQUALS(rt_band_get_pixtype(ctx, band), PT_1BB);
+        CHECK(!rt_band_is_offline(ctx, band));
+        CHECK_EQUALS(rt_band_get_nodata(ctx, band), -1);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 0, 0), -1);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 1, 0), 0);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 2, 0), 1);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 0, 1), 127);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 1, 1), 10);
+        CHECK_EQUALS(rt_band_get_pixel(ctx, band, 2, 1), 2);
+    }
+
+    /* ------------------------------------------------------ */
+
+    printf("All tests successful !\n");
+
+    return EXIT_SUCCESS;
+}
+
+/* This is needed by liblwgeom */
+void
+lwgeom_init_allocators(void)
+{
+    lwgeom_install_default_allocators();
+}



More information about the postgis-commits mailing list