[geos-commits] r3070 - in trunk/php: . test

svn_geos at osgeo.org svn_geos at osgeo.org
Thu Jun 24 05:20:36 EDT 2010


Author: strk
Date: 2010-06-24 09:20:36 +0000 (Thu, 24 Jun 2010)
New Revision: 3070

Modified:
   trunk/php/geos.c
   trunk/php/test/test.php
Log:
WKBWriter::{set,get}IncludeSRID (and test)


Modified: trunk/php/geos.c
===================================================================
--- trunk/php/geos.c	2010-06-24 09:07:10 UTC (rev 3069)
+++ trunk/php/geos.c	2010-06-24 09:20:36 UTC (rev 3070)
@@ -1819,6 +1819,8 @@
 PHP_METHOD(WKBWriter, setOutputDimension);
 PHP_METHOD(WKBWriter, getByteOrder);
 PHP_METHOD(WKBWriter, setByteOrder);
+PHP_METHOD(WKBWriter, setIncludeSRID);
+PHP_METHOD(WKBWriter, getIncludeSRID);
 PHP_METHOD(WKBWriter, writeHEX);
 
 static function_entry WKBWriter_methods[] = {
@@ -1827,6 +1829,8 @@
     PHP_ME(WKBWriter, setOutputDimension, NULL, 0)
     PHP_ME(WKBWriter, getByteOrder, NULL, 0)
     PHP_ME(WKBWriter, setByteOrder, NULL, 0)
+    PHP_ME(WKBWriter, getIncludeSRID, NULL, 0)
+    PHP_ME(WKBWriter, setIncludeSRID, NULL, 0)
     PHP_ME(WKBWriter, writeHEX, NULL, 0)
     {NULL, NULL, NULL}
 };
@@ -1972,8 +1976,45 @@
 
 }
 
+/**
+ * bool GEOSWKBWriter::getIncludeSRID();
+ */
+PHP_METHOD(WKBWriter, getIncludeSRID)
+{
+    GEOSWKBWriter *writer;
+    int ret;
+    zend_bool retBool;
 
+    writer = (GEOSWKBWriter*)getRelay(getThis(), WKBWriter_ce_ptr);
 
+    ret = GEOSWKBWriter_getIncludeSRID(writer);
+    retBool = ret;
+
+    RETURN_BOOL(retBool);
+}
+
+/**
+ * void GEOSWKBWriter::setIncludeSRID(bool);
+ */
+PHP_METHOD(WKBWriter, setIncludeSRID)
+{
+    GEOSWKBWriter *writer;
+    int inc;
+    zend_bool incVal;
+
+    writer = (GEOSWKBWriter*)getRelay(getThis(), WKBWriter_ce_ptr);
+
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &incVal)
+        == FAILURE)
+    {
+        RETURN_NULL();
+    }
+
+    inc = incVal;
+    GEOSWKBWriter_setIncludeSRID(writer, inc);
+}
+
+
 /* -- Free functions ------------------------- */
 
 /**

Modified: trunk/php/test/test.php
===================================================================
--- trunk/php/test/test.php	2010-06-24 09:07:10 UTC (rev 3069)
+++ trunk/php/test/test.php	2010-06-24 09:20:36 UTC (rev 3070)
@@ -1773,6 +1773,17 @@
 
     }
 
+    public function testWKBWriter_getsetIncludeSRID()
+    {
+        $writer = new GEOSWKBWriter();
+
+        $this->assertEquals(FALSE, $writer->getIncludeSRID());
+        $writer->setIncludeSRID(TRUE);
+        $this->assertEquals(TRUE, $writer->getIncludeSRID());
+        $writer->setIncludeSRID(FALSE);
+        $this->assertEquals(FALSE, $writer->getIncludeSRID());
+    }
+
     public function testWKBWriter_writeHEX()
     {
         $writer = new GEOSWKBWriter();
@@ -1786,45 +1797,103 @@
         }
 
         $g = $reader->read('POINT(6 7)');
+        $g->setSRID(43);
 
         $writer->setOutputDimension(2); // 2D
 
-        $writer->setByteOrder(1); // LITTLE endian
-        $this->assertEquals('010100000000000000000018400000000000001C40',
+        // 2D LITTLE endian
+        $writer->setByteOrder(1);
+        $this->assertEquals(
+            '010100000000000000000018400000000000001C40',
             $writer->writeHEX($g));
-        $writer->setByteOrder(0); // BIG endian
+        // 2D LITTLE endian + SRID 
+        $writer->setIncludeSRID(TRUE);
+        $this->assertEquals(
+            '01010000202B00000000000000000018400000000000001C40',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE);
+
+        // 2D BIG endian
+        $writer->setByteOrder(0);
         $this->assertEquals('00000000014018000000000000401C000000000000',
             $writer->writeHEX($g));
+        // 2D BIG endian + SRID
+        $writer->setIncludeSRID(TRUE); 
+        $this->assertEquals(
+            '00200000010000002B4018000000000000401C000000000000',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE); 
 
         $writer->setOutputDimension(3); // 3D
 
-        $writer->setByteOrder(1); // LITTLE endian
-        $this->assertEquals('010100000000000000000018400000000000001C40',
+        // 3D LITTLE endian (2D input)
+        $writer->setByteOrder(1);
+        $this->assertEquals(
+            '010100000000000000000018400000000000001C40',
             $writer->writeHEX($g));
-        $writer->setByteOrder(0); // BIG endian
+        // 3D LITTLE endian + SRID  (2D input)
+        $writer->setIncludeSRID(TRUE);
+        $this->assertEquals(
+            '01010000202B00000000000000000018400000000000001C40',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE);
+
+        // 3D BIG endian (2D input)
+        $writer->setByteOrder(0);
         $this->assertEquals('00000000014018000000000000401C000000000000',
             $writer->writeHEX($g));
+        // 3D BIG endian + SRID (2D input)
+        $writer->setIncludeSRID(TRUE); 
+        $this->assertEquals(
+            '00200000010000002B4018000000000000401C000000000000',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE); 
 
+
         $g = $reader->read('POINT(6 7 8)');
+        $g->setSRID(53);
 
         $writer->setOutputDimension(2); // 2D
 
-        $writer->setByteOrder(1); // LITTLE endian
+        // 2D LITTLE endian (3D input)
+        $writer->setByteOrder(1);
         $this->assertEquals('010100000000000000000018400000000000001C40',
             $writer->writeHEX($g));
-        $writer->setByteOrder(0); // BIG endian
+        // 2D LITTLE endian + SRID (3D input)
+        $writer->setIncludeSRID(TRUE);
+        $writer->setByteOrder(1);
+        $this->assertEquals(
+            '01010000203500000000000000000018400000000000001C40',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE);
+        // 2D BIG endian (3D input)
+        $writer->setByteOrder(0);
         $this->assertEquals('00000000014018000000000000401C000000000000',
             $writer->writeHEX($g));
+        // 2D BIG endian + SRID (3D input)
+        $writer->setIncludeSRID(TRUE);
+        $this->assertEquals(
+            '0020000001000000354018000000000000401C000000000000',
+            $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE);
 
         $writer->setOutputDimension(3); // 3D
 
-        $writer->setByteOrder(1); // LITTLE endian, 2d
+        // 3D LITTLE endian (3D input)
+        $writer->setByteOrder(1);
         $this->assertEquals(
             '010100008000000000000018400000000000001C400000000000002040',
             $writer->writeHEX($g));
-        $writer->setByteOrder(0); // BIG endian, 3d
+        // 3D BIG endian (3D input)
+        $writer->setByteOrder(0); 
         $this->assertEquals(
             '00800000014018000000000000401C0000000000004020000000000000',
             $writer->writeHEX($g));
+        // 3D BIG endian + SRID (3D input)
+        $writer->setIncludeSRID(TRUE);
+        $this->assertEquals(
+          '00A0000001000000354018000000000000401C0000000000004020000000000000',
+          $writer->writeHEX($g));
+        $writer->setIncludeSRID(FALSE);
     }
 }



More information about the geos-commits mailing list