ffi-geos 1.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +49 -0
  3. data/.rubocop.yml +5117 -4
  4. data/FUNDING.yml +2 -0
  5. data/Gemfile +9 -16
  6. data/Guardfile +3 -4
  7. data/MIT-LICENSE +1 -1
  8. data/README.rdoc +2 -20
  9. data/Rakefile +3 -2
  10. data/ffi-geos.gemspec +7 -2
  11. data/lib/ffi-geos/buffer_params.rb +1 -1
  12. data/lib/ffi-geos/coordinate_sequence.rb +179 -177
  13. data/lib/ffi-geos/geometry.rb +118 -31
  14. data/lib/ffi-geos/geometry_collection.rb +26 -12
  15. data/lib/ffi-geos/interrupt.rb +11 -14
  16. data/lib/ffi-geos/line_string.rb +64 -49
  17. data/lib/ffi-geos/multi_line_string.rb +1 -1
  18. data/lib/ffi-geos/point.rb +18 -18
  19. data/lib/ffi-geos/polygon.rb +44 -30
  20. data/lib/ffi-geos/prepared_geometry.rb +1 -1
  21. data/lib/ffi-geos/strtree.rb +28 -30
  22. data/lib/ffi-geos/tools.rb +1 -1
  23. data/lib/ffi-geos/utils.rb +16 -23
  24. data/lib/ffi-geos/version.rb +1 -1
  25. data/lib/ffi-geos/wkb_reader.rb +1 -1
  26. data/lib/ffi-geos/wkb_writer.rb +4 -5
  27. data/lib/ffi-geos/wkt_reader.rb +1 -1
  28. data/lib/ffi-geos/wkt_writer.rb +7 -13
  29. data/lib/ffi-geos.rb +134 -48
  30. data/sonar-project.properties +16 -0
  31. data/test/coordinate_sequence_tests.rb +148 -126
  32. data/test/geometry_collection_tests.rb +41 -67
  33. data/test/geometry_tests.rb +341 -40
  34. data/test/interrupt_tests.rb +7 -7
  35. data/test/line_string_tests.rb +23 -15
  36. data/test/point_tests.rb +5 -5
  37. data/test/polygon_tests.rb +6 -7
  38. data/test/prepared_geometry_tests.rb +8 -8
  39. data/test/strtree_tests.rb +13 -12
  40. data/test/test_helper.rb +74 -56
  41. data/test/utils_tests.rb +69 -59
  42. data/test/wkb_reader_tests.rb +9 -9
  43. data/test/wkb_writer_tests.rb +14 -12
  44. data/test/wkt_reader_tests.rb +0 -1
  45. data/test/wkt_writer_tests.rb +2 -5
  46. metadata +12 -10
  47. data/.travis.yml +0 -21
@@ -16,7 +16,7 @@ class GeometryCollectionTests < Minitest::Test
16
16
  geom = read('GEOMETRYCOLLECTION(POINT(0 0))')
17
17
  assert_kind_of(Enumerable, geom.each)
18
18
  assert_kind_of(Enumerable, geom.to_enum)
19
- assert_equal(geom, geom.each {})
19
+ assert_equal(geom, geom.each(&EMPTY_BLOCK))
20
20
  end
21
21
 
22
22
  def test_geometry_collection_array
@@ -173,7 +173,8 @@ class GeometryCollectionTests < Minitest::Test
173
173
  end
174
174
 
175
175
  def test_snap_to_grid
176
- wkt = 'GEOMETRYCOLLECTION (LINESTRING (-10.12 0, -10.12 5, -10.12 5, -10.12 6, -10.12 6, -10.12 6, -10.12 7, -10.12 7, -10.12 7, -10.12 8, -10.12 8, -9 8, -9 9, -10.12 0), POLYGON ((-10.12 0, -10.12 5, -10.12 5, -10.12 6, -10.12 6, -10.12 6, -10.12 7, -10.12 7, -10.12 7, -10.12 8, -10.12 8, -9 8, -9 9, -10.12 0)), POINT (10.12 10.12))'
176
+ wkt = 'GEOMETRYCOLLECTION (LINESTRING (-10.12 0, -10.12 5, -10.12 5, -10.12 6, -10.12 6, -10.12 6, -10.12 7, -10.12 7, -10.12 7, -10.12 8, -10.12 8, -9 8, -9 9, -10.12 0), ' \
177
+ 'POLYGON ((-10.12 0, -10.12 5, -10.12 5, -10.12 6, -10.12 6, -10.12 6, -10.12 7, -10.12 7, -10.12 7, -10.12 8, -10.12 8, -9 8, -9 9, -10.12 0)), POINT (10.12 10.12))'
177
178
 
178
179
  expected = 'GEOMETRYCOLLECTION (LINESTRING (-10 0, -10 5, -10 5, -10 6, -10 6, -10 6, -10 7, -10 7, -10 7, -10 8, -10 8, -9 8, -9 9, -10 0), POLYGON ((-10 0, -10 5, -10 5, -10 6, -10 6, -10 6, -10 7, -10 7, -10 7, -10 8, -10 8, -9 8, -9 9, -10 0)), POINT (10 10))'
179
180
 
@@ -200,8 +201,8 @@ class GeometryCollectionTests < Minitest::Test
200
201
 
201
202
  def test_snap_to_grid_with_illegal_result
202
203
  assert_raises(Geos::InvalidGeometryError) do
203
- read('GEOMETRYCOLLECTION (POINT (0 2), LINESTRING (0 1, 0 11), POLYGON ((0 1, 0 1, 0 6, 0 6, 0 1)))').
204
- snap_to_grid(1)
204
+ read('GEOMETRYCOLLECTION (POINT (0 2), LINESTRING (0 1, 0 11), POLYGON ((0 1, 0 1, 0 6, 0 6, 0 1)))')
205
+ .snap_to_grid(1)
205
206
  end
206
207
  end
207
208
 
@@ -214,29 +215,25 @@ class GeometryCollectionTests < Minitest::Test
214
215
  'GEOMETRYCOLLECTION (POINT (29 11), LINESTRING (30 10, 20 20), POLYGON ((30 10, 30 15, 25 15, 25 10, 30 10)))',
215
216
  wkt,
216
217
  Math::PI / 2,
217
- [ 10.0, 20.0 ]
218
- )
218
+ [10.0, 20.0])
219
219
 
220
220
  affine_tester(:rotate,
221
221
  'GEOMETRYCOLLECTION (POINT (-2 0), LINESTRING (-3 1, 7 -9), POLYGON ((-3 1, -3 -4, 2 -4, 2 1, -3 1)))',
222
222
  wkt,
223
223
  -Math::PI / 2,
224
- [ -1.0, 2.0 ]
225
- )
224
+ [-1.0, 2.0])
226
225
 
227
226
  affine_tester(:rotate,
228
227
  'GEOMETRYCOLLECTION (POINT (19 1), LINESTRING (20 0, 10 10), POLYGON ((20 0, 20 5, 15 5, 15 0, 20 0)))',
229
228
  wkt,
230
229
  Math::PI / 2,
231
- read('POINT(10 10)')
232
- )
230
+ read('POINT(10 10)'))
233
231
 
234
232
  affine_tester(:rotate,
235
233
  'GEOMETRYCOLLECTION (POINT (-0.5 0.5), LINESTRING (0.5 -0.5, -9.5 9.5), POLYGON ((0.5 -0.5, 0.5 4.5, -4.5 4.5, -4.5 -0.5, 0.5 -0.5)))',
236
234
  wkt,
237
235
  Math::PI / 2,
238
- read('LINESTRING(0 0, 1 0)')
239
- )
236
+ read('LINESTRING(0 0, 1 0)'))
240
237
  end
241
238
 
242
239
  def test_rotate_x
@@ -248,26 +245,22 @@ class GeometryCollectionTests < Minitest::Test
248
245
  affine_tester(:rotate_x,
249
246
  'GEOMETRYCOLLECTION Z (POINT Z (1 -1 -1), LINESTRING Z (1 -1 -1, 10 -10 -10), POLYGON Z ((0 0 0, 5 0 0, 5 -5 0, 0 -5 0, 0 0 0)))',
250
247
  wkt,
251
- Math::PI
252
- )
248
+ Math::PI)
253
249
 
254
250
  affine_tester(:rotate_x,
255
251
  'GEOMETRYCOLLECTION Z (POINT Z (1 -1 1), LINESTRING Z (1 -1 1, 10 -10 10), POLYGON Z ((0 0 0, 5 0 0, 5 0 5, 0 0 5, 0 0 0)))',
256
252
  wkt,
257
- Math::PI / 2
258
- )
253
+ Math::PI / 2)
259
254
 
260
255
  affine_tester(:rotate_x,
261
256
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 -1), LINESTRING Z (1 1 -1, 10 10 -10), POLYGON Z ((0 0 0, 5 0 0, 5 0 -5, 0 0 -5, 0 0 0)))',
262
257
  wkt,
263
- Math::PI + Math::PI / 2
264
- )
258
+ Math::PI + (Math::PI / 2))
265
259
 
266
260
  affine_tester(:rotate_x,
267
261
  wkt,
268
262
  wkt,
269
- Math::PI * 2
270
- )
263
+ Math::PI * 2)
271
264
  end
272
265
 
273
266
  def test_rotate_y
@@ -279,26 +272,22 @@ class GeometryCollectionTests < Minitest::Test
279
272
  affine_tester(:rotate_y,
280
273
  'GEOMETRYCOLLECTION Z (POINT Z (-1 1 -1), LINESTRING Z (-1 1 -1, -10 10 -10), POLYGON Z ((0 0 0, -5 0 0, -5 5 0, 0 5 0, 0 0 0)))',
281
274
  wkt,
282
- Math::PI
283
- )
275
+ Math::PI)
284
276
 
285
277
  affine_tester(:rotate_y,
286
278
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 -1), LINESTRING Z (1 1 -1, 10 10 -10), POLYGON Z ((0 0 0, 0 0 -5, 0 5 -5, 0 5 0, 0 0 0)))',
287
279
  wkt,
288
- Math::PI / 2
289
- )
280
+ Math::PI / 2)
290
281
 
291
282
  affine_tester(:rotate_y,
292
283
  'GEOMETRYCOLLECTION Z (POINT Z (-1 1 1), LINESTRING Z (-1 1 1, -10 10 10), POLYGON Z ((0 0 0, 0 0 5, 0 5 5, 0 5 0, 0 0 0)))',
293
284
  wkt,
294
- Math::PI + Math::PI / 2
295
- )
285
+ Math::PI + (Math::PI / 2))
296
286
 
297
287
  affine_tester(:rotate_y,
298
288
  wkt,
299
289
  wkt,
300
- Math::PI * 2
301
- )
290
+ Math::PI * 2)
302
291
  end
303
292
 
304
293
  def test_rotate_z
@@ -309,26 +298,22 @@ class GeometryCollectionTests < Minitest::Test
309
298
  affine_tester(:rotate_z,
310
299
  'GEOMETRYCOLLECTION (POINT (-1 -1), LINESTRING (0 0, -10 -10), POLYGON ((0 0, -5 0, -5 -5, 0 -5, 0 0)))',
311
300
  wkt,
312
- Math::PI
313
- )
301
+ Math::PI)
314
302
 
315
303
  affine_tester(:rotate_z,
316
304
  'GEOMETRYCOLLECTION (POINT (-1 1), LINESTRING (0 0, -10 10), POLYGON ((0 0, 0 5, -5 5, -5 0, 0 0)))',
317
305
  wkt,
318
- Math::PI / 2
319
- )
306
+ Math::PI / 2)
320
307
 
321
308
  affine_tester(:rotate_z,
322
309
  'GEOMETRYCOLLECTION (POINT (1 -1), LINESTRING (0 0, 10 -10), POLYGON ((0 0, 0 -5, 5 -5, 5 0, 0 0)))',
323
310
  wkt,
324
- Math::PI + Math::PI / 2
325
- )
311
+ Math::PI + (Math::PI / 2))
326
312
 
327
313
  affine_tester(:rotate_z,
328
314
  wkt,
329
315
  wkt,
330
- Math::PI * 2
331
- )
316
+ Math::PI * 2)
332
317
  end
333
318
 
334
319
  def test_scale
@@ -336,15 +321,13 @@ class GeometryCollectionTests < Minitest::Test
336
321
  'GEOMETRYCOLLECTION (POINT (5 5), LINESTRING (0 0, 50 50), POLYGON ((0 0, 25 0, 25 25, 0 25, 0 0)))',
337
322
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
338
323
  5,
339
- 5
340
- )
324
+ 5)
341
325
 
342
326
  affine_tester(:scale,
343
327
  'GEOMETRYCOLLECTION (POINT (3 2), LINESTRING (0 0, 30 20), POLYGON ((0 0, 15 0, 15 10, 0 10, 0 0)))',
344
328
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
345
329
  3,
346
- 2
347
- )
330
+ 2)
348
331
 
349
332
  writer.output_dimensions = 3
350
333
  affine_tester(:scale,
@@ -352,33 +335,29 @@ class GeometryCollectionTests < Minitest::Test
352
335
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
353
336
  4,
354
337
  2,
355
- -8
356
- )
338
+ -8)
357
339
  end
358
340
 
359
341
  def test_scale_hash
360
342
  affine_tester(:scale,
361
343
  'GEOMETRYCOLLECTION (POINT (5 5), LINESTRING (0 0, 50 50), POLYGON ((0 0, 25 0, 25 25, 0 25, 0 0)))',
362
344
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
363
- :x => 5,
364
- :y => 5
365
- )
345
+ x: 5,
346
+ y: 5)
366
347
 
367
348
  affine_tester(:scale,
368
349
  'GEOMETRYCOLLECTION (POINT (3 2), LINESTRING (0 0, 30 20), POLYGON ((0 0, 15 0, 15 10, 0 10, 0 0)))',
369
350
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
370
- :x => 3,
371
- :y => 2
372
- )
351
+ x: 3,
352
+ y: 2)
373
353
 
374
354
  writer.output_dimensions = 3
375
355
  affine_tester(:scale,
376
356
  'GEOMETRYCOLLECTION Z (POINT Z (4 2 -8), LINESTRING Z (4 2 -8, 40 20 -80), POLYGON Z ((0 0 0, 20 0 0, 20 10 0, 0 10 0, 0 0 0)))',
377
357
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
378
- :x => 4,
379
- :y => 2,
380
- :z => -8
381
- )
358
+ x: 4,
359
+ y: 2,
360
+ z: -8)
382
361
  end
383
362
 
384
363
  def test_trans_scale
@@ -445,28 +424,26 @@ class GeometryCollectionTests < Minitest::Test
445
424
  affine_tester(:trans_scale,
446
425
  'GEOMETRYCOLLECTION (POINT (2 2), LINESTRING (1 1, 11 11), POLYGON ((1 1, 6 1, 6 6, 1 6, 1 1)))',
447
426
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
448
- :delta_x => 1, :delta_y => 1, :x_factor => 1, :y_factor => 1)
427
+ delta_x: 1, delta_y: 1, x_factor: 1, y_factor: 1)
449
428
 
450
429
  writer.output_dimensions = 3
451
430
  affine_tester(:trans_scale,
452
431
  'GEOMETRYCOLLECTION Z (POINT Z (15 28 1), LINESTRING Z (15 28 1, 60 91 10), POLYGON Z ((10 21 0, 35 21 0, 35 56 0, 10 56 0, 10 21 0)))',
453
432
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
454
- :delta_x => 2, :delta_y => 3, :x_factor => 5, :y_factor => 7)
433
+ delta_x: 2, delta_y: 3, x_factor: 5, y_factor: 7)
455
434
 
456
435
  affine_tester(:trans_scale,
457
436
  'GEOMETRYCOLLECTION Z (POINT Z (3 1 1), LINESTRING Z (3 1 1, 12 10 10), POLYGON Z ((2 0 0, 7 0 0, 7 5 0, 2 5 0, 2 0 0)))',
458
437
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
459
- :delta_x => 2, :z_factor => 2)
438
+ delta_x: 2, z_factor: 2)
460
439
  end
461
440
 
462
-
463
441
  def test_translate
464
442
  affine_tester(:translate,
465
443
  'GEOMETRYCOLLECTION (POINT (6 13), LINESTRING (5 12, 15 22), POLYGON ((5 12, 10 12, 10 17, 5 17, 5 12)))',
466
444
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
467
445
  5,
468
- 12
469
- )
446
+ 12)
470
447
 
471
448
  writer.output_dimensions = 3
472
449
  affine_tester(:translate,
@@ -474,25 +451,22 @@ class GeometryCollectionTests < Minitest::Test
474
451
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
475
452
  -3,
476
453
  -7,
477
- 3
478
- )
454
+ 3)
479
455
  end
480
456
 
481
457
  def test_translate_hash
482
458
  affine_tester(:translate,
483
459
  'GEOMETRYCOLLECTION (POINT (6 13), LINESTRING (5 12, 15 22), POLYGON ((5 12, 10 12, 10 17, 5 17, 5 12)))',
484
460
  'GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (0 0, 10 10), POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)))',
485
- :x => 5,
486
- :y => 12
487
- )
461
+ x: 5,
462
+ y: 12)
488
463
 
489
464
  writer.output_dimensions = 3
490
465
  affine_tester(:translate,
491
466
  'GEOMETRYCOLLECTION Z (POINT Z (-2 -6 4), LINESTRING Z (-2 -6 4, 7 3 13), POLYGON Z ((-3 -7 3, 2 -7 3, 2 -2 3, -3 -2 3, -3 -7 3)))',
492
467
  'GEOMETRYCOLLECTION Z (POINT Z (1 1 1), LINESTRING Z (1 1 1, 10 10 10), POLYGON Z ((0 0 0, 5 0 0, 5 5 0, 0 5 0, 0 0 0)))',
493
- :x => -3,
494
- :y => -7,
495
- :z => 3
496
- )
468
+ x: -3,
469
+ y: -7,
470
+ z: 3)
497
471
  end
498
472
  end