@@ -405,7 +405,7 @@ mod tests {
405
405
406
406
#[ test]
407
407
#[ ignore]
408
- fn test_insert_multipoylgon ( ) {
408
+ fn test_insert_multipolygon ( ) {
409
409
let conn = connect ( ) ;
410
410
or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE geomtests (geom geometry(MultiPolygon))" , & [ ] ) ) ;
411
411
let p = |x, y| ewkb:: Point { x : x, y : y, srid : Some ( 4326 ) } ;
@@ -420,6 +420,55 @@ mod tests {
420
420
assert ! ( result. iter( ) . map( |r| r. get:: <_, bool >( 0 ) ) . last( ) . unwrap( ) ) ;
421
421
}
422
422
423
+ #[ test]
424
+ #[ ignore]
425
+ fn test_insert_geometry ( ) {
426
+ let conn = connect ( ) ;
427
+ or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE geomtests (geom geometry)" , & [ ] ) ) ;
428
+ let p = |x, y| ewkb:: Point { x : x, y : y, srid : Some ( 4326 ) } ;
429
+ // SELECT 'SRID=4326;MULTIPOLYGON (((0 0, 2 0, 2 2, 0 2, 0 0)), ((10 10, -2 10, -2 -2, 10 -2, 10 10)))'::geometry
430
+ let multipoly = {
431
+ let line = ewkb:: LineString { srid : Some ( 4326 ) , points : vec ! [ p( 0. , 0. ) , p( 2. , 0. ) , p( 2. , 2. ) , p( 0. , 2. ) , p( 0. , 0. ) ] } ;
432
+ let poly1 = ewkb:: Polygon { srid : Some ( 4326 ) , rings : vec ! [ line] } ;
433
+ let line = ewkb:: LineString { srid : Some ( 4326 ) , points : vec ! [ p( 10. , 10. ) , p( -2. , 10. ) , p( -2. , -2. ) , p( 10. , -2. ) , p( 10. , 10. ) ] } ;
434
+ let poly2 = ewkb:: Polygon { srid : Some ( 4326 ) , rings : vec ! [ line] } ;
435
+ ewkb:: MultiPolygon { srid : Some ( 4326 ) , polygons : vec ! [ poly1, poly2] }
436
+ } ;
437
+ let geometry = ewkb:: GeometryT :: MultiPolygon ( multipoly) ;
438
+ or_panic ! ( conn. execute( "INSERT INTO geomtests (geom) VALUES ($1)" , & [ & geometry] ) ) ;
439
+ let result = or_panic ! ( conn. query( "SELECT geom=ST_GeomFromEWKT('SRID=4326;MULTIPOLYGON (((0 0, 2 0, 2 2, 0 2, 0 0)), ((10 10, -2 10, -2 -2, 10 -2, 10 10)))') FROM geomtests" , & [ ] ) ) ;
440
+ assert ! ( result. iter( ) . map( |r| r. get:: <_, bool >( 0 ) ) . last( ) . unwrap( ) ) ;
441
+ }
442
+
443
+ #[ test]
444
+ #[ ignore]
445
+ fn test_insert_geometrycollection ( ) {
446
+ let conn = connect ( ) ;
447
+ or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE geomtests (geom geometry(GeometryCollection))" , & [ ] ) ) ;
448
+ let p = |x, y| ewkb:: Point { x : x, y : y, srid : Some ( 4326 ) } ;
449
+ // SELECT 'SRID=4326;LINESTRING (10 -20, -0 -0.5)'
450
+ let line = ewkb:: LineString { srid : Some ( 4326 ) , points : vec ! [ p( 10.0 , -20.0 ) , p( 0. , -0.5 ) ] } ;
451
+ // SELECT 'SRID=4326;MULTIPOLYGON (((0 0, 2 0, 2 2, 0 2, 0 0)), ((10 10, -2 10, -2 -2, 10 -2, 10 10)))'::geometry
452
+ let multipoly = {
453
+ let line = ewkb:: LineString { srid : Some ( 4326 ) , points : vec ! [ p( 0. , 0. ) , p( 2. , 0. ) , p( 2. , 2. ) , p( 0. , 2. ) , p( 0. , 0. ) ] } ;
454
+ let poly1 = ewkb:: Polygon { srid : Some ( 4326 ) , rings : vec ! [ line] } ;
455
+ let line = ewkb:: LineString { srid : Some ( 4326 ) , points : vec ! [ p( 10. , 10. ) , p( -2. , 10. ) , p( -2. , -2. ) , p( 10. , -2. ) , p( 10. , 10. ) ] } ;
456
+ let poly2 = ewkb:: Polygon { srid : Some ( 4326 ) , rings : vec ! [ line] } ;
457
+ ewkb:: MultiPolygon { srid : Some ( 4326 ) , polygons : vec ! [ poly1, poly2] }
458
+ } ;
459
+ // SELECT 'SRID=4326;GEOMETRYCOLLECTION (LINESTRING (10 -20,0 -0.5), MULTIPOLYGON (((0 0,2 0,2 2,0 2,0 0)),((10 10,-2 10,-2 -2,10 -2,10 10))))'::geometry
460
+ let collection = ewkb:: GeometryCollection {
461
+ srid : Some ( 4326 ) ,
462
+ geometries : vec ! [
463
+ ewkb:: GeometryT :: LineString ( line) ,
464
+ ewkb:: GeometryT :: MultiPolygon ( multipoly) ,
465
+ ] ,
466
+ } ;
467
+ or_panic ! ( conn. execute( "INSERT INTO geomtests (geom) VALUES ($1)" , & [ & collection] ) ) ;
468
+ let result = or_panic ! ( conn. query( "SELECT geom=ST_GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION (LINESTRING (10 -20,0 -0.5), MULTIPOLYGON (((0 0,2 0,2 2,0 2,0 0)),((10 10,-2 10,-2 -2,10 -2,10 10))))') FROM geomtests" , & [ ] ) ) ;
469
+ assert ! ( result. iter( ) . map( |r| r. get:: <_, bool >( 0 ) ) . last( ) . unwrap( ) ) ;
470
+ }
471
+
423
472
#[ test]
424
473
#[ ignore]
425
474
fn test_select_point ( ) {
0 commit comments