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
data/test/utils_tests.rb CHANGED
@@ -22,8 +22,8 @@ class UtilsTests < Minitest::Test
22
22
  assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 20))
23
23
  assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 3))
24
24
  assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, -2))
25
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 1000000, 1000001))
26
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 1000000, 999999))
25
+ assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 1_000_000, 1_000_001))
26
+ assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 1_000_000, 999_999))
27
27
  end
28
28
 
29
29
  def test_relate_match
@@ -48,7 +48,7 @@ class UtilsTests < Minitest::Test
48
48
  end
49
49
 
50
50
  def test_create_point
51
- cs = Geos::CoordinateSequence.new([[ 10, 20 ]])
51
+ cs = Geos::CoordinateSequence.new([[10, 20]])
52
52
  create_method_tester('POINT (10 20)', :create_point, cs, Geos::GEOS_POINT, Geos::Point)
53
53
  end
54
54
 
@@ -75,8 +75,8 @@ class UtilsTests < Minitest::Test
75
75
 
76
76
  def test_create_line_string
77
77
  cs = Geos::CoordinateSequence.new([
78
- [ 10, 20, 30 ],
79
- [ 30, 20, 10 ]
78
+ [10, 20, 30],
79
+ [30, 20, 10]
80
80
  ])
81
81
 
82
82
  writer.output_dimensions = 3
@@ -103,7 +103,7 @@ class UtilsTests < Minitest::Test
103
103
  create_method_tester(
104
104
  'LINESTRING Z (10 20 30, 30 20 10)',
105
105
  :create_line_string,
106
- [[ 10, 20, 30 ], [ 30, 20, 10 ]],
106
+ [[10, 20, 30], [30, 20, 10]],
107
107
  Geos::GEOS_LINESTRING,
108
108
  Geos::LineString
109
109
  ) do |geom|
@@ -125,10 +125,10 @@ class UtilsTests < Minitest::Test
125
125
 
126
126
  def test_create_linear_ring
127
127
  cs = Geos::CoordinateSequence.new([
128
- [ 7, 8, 9 ],
129
- [ 3, 3, 3 ],
130
- [ 11, 15.2, 2 ],
131
- [ 7, 8, 9 ]
128
+ [7, 8, 9],
129
+ [3, 3, 3],
130
+ [11, 15.2, 2],
131
+ [7, 8, 9]
132
132
  ])
133
133
 
134
134
  writer.output_dimensions = 3
@@ -155,7 +155,7 @@ class UtilsTests < Minitest::Test
155
155
  create_method_tester(
156
156
  'LINEARRING Z (7 8 9, 3 3 3, 11 15.2 2, 7 8 9)',
157
157
  :create_linear_ring,
158
- [[ 7, 8, 9 ], [ 3, 3, 3 ], [ 11, 15.2, 2 ], [ 7, 8, 9 ]],
158
+ [[7, 8, 9], [3, 3, 3], [11, 15.2, 2], [7, 8, 9]],
159
159
  Geos::GEOS_LINEARRING,
160
160
  Geos::LinearRing
161
161
  ) do |geom|
@@ -178,11 +178,11 @@ class UtilsTests < Minitest::Test
178
178
 
179
179
  def test_create_polygon
180
180
  cs = Geos::CoordinateSequence.new([
181
- [ 0, 0 ],
182
- [ 0, 10 ],
183
- [ 10, 10 ],
184
- [ 10, 0 ],
185
- [ 0, 0 ]
181
+ [0, 0],
182
+ [0, 10],
183
+ [10, 10],
184
+ [10, 0],
185
+ [0, 0]
186
186
  ])
187
187
 
188
188
  exterior_ring = Geos.create_linear_ring(cs)
@@ -196,19 +196,19 @@ class UtilsTests < Minitest::Test
196
196
 
197
197
  def test_create_polygon_with_coordinate_sequences
198
198
  outer = Geos::CoordinateSequence.new(
199
- [ 0, 0 ],
200
- [ 0, 10 ],
201
- [ 10, 10 ],
202
- [ 10, 0 ],
203
- [ 0, 0 ]
199
+ [0, 0],
200
+ [0, 10],
201
+ [10, 10],
202
+ [10, 0],
203
+ [0, 0]
204
204
  )
205
205
 
206
206
  inner = Geos::CoordinateSequence.new(
207
- [ 2, 2 ],
208
- [ 2, 4 ],
209
- [ 4, 4 ],
210
- [ 4, 2 ],
211
- [ 2, 2 ]
207
+ [2, 2],
208
+ [2, 4],
209
+ [4, 4],
210
+ [4, 2],
211
+ [2, 2]
212
212
  )
213
213
 
214
214
  geom = Geos.create_polygon(outer, inner)
@@ -220,30 +220,30 @@ class UtilsTests < Minitest::Test
220
220
 
221
221
  def test_create_polygon_with_holes
222
222
  exterior_ring = Geos::CoordinateSequence.new(
223
- [ 0, 0 ],
224
- [ 0, 10 ],
225
- [ 10, 10 ],
226
- [ 10, 0 ],
227
- [ 0, 0 ]
223
+ [0, 0],
224
+ [0, 10],
225
+ [10, 10],
226
+ [10, 0],
227
+ [0, 0]
228
228
  )
229
229
 
230
230
  hole_1 = Geos::CoordinateSequence.new(
231
- [ 2, 2 ],
232
- [ 2, 4 ],
233
- [ 4, 4 ],
234
- [ 4, 2 ],
235
- [ 2, 2 ]
231
+ [2, 2],
232
+ [2, 4],
233
+ [4, 4],
234
+ [4, 2],
235
+ [2, 2]
236
236
  )
237
237
 
238
238
  hole_2 = Geos::CoordinateSequence.new(
239
- [ 6, 6 ],
240
- [ 6, 8 ],
241
- [ 8, 8 ],
242
- [ 8, 6 ],
243
- [ 6, 6 ]
239
+ [6, 6],
240
+ [6, 8],
241
+ [8, 8],
242
+ [8, 6],
243
+ [6, 6]
244
244
  )
245
245
 
246
- geom = Geos.create_polygon(exterior_ring, [ hole_1, hole_2 ])
246
+ geom = Geos.create_polygon(exterior_ring, [hole_1, hole_2])
247
247
  assert_instance_of(Geos::Polygon, geom)
248
248
  assert_equal('Polygon', geom.geom_type)
249
249
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -261,10 +261,13 @@ class UtilsTests < Minitest::Test
261
261
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_point)
262
262
 
263
263
  assert_equal('MULTIPOINT EMPTY', write(Geos.create_multi_point))
264
- assert_equal('MULTIPOINT (0 0, 10 10)', write(Geos.create_multi_point(
265
- read('POINT(0 0)'),
266
- read('POINT(10 10)')
267
- )))
264
+ assert_equal('MULTIPOINT (0 0, 10 10)',
265
+ write(
266
+ Geos.create_multi_point(
267
+ read('POINT(0 0)'),
268
+ read('POINT(10 10)')
269
+ )
270
+ ))
268
271
  end
269
272
 
270
273
  def test_create_bad_multi_point
@@ -282,10 +285,13 @@ class UtilsTests < Minitest::Test
282
285
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_line_string)
283
286
 
284
287
  assert_equal('MULTILINESTRING EMPTY', write(Geos.create_multi_line_string))
285
- assert_equal('MULTILINESTRING ((0 0, 10 10), (10 10, 20 20))', write(Geos.create_multi_line_string(
286
- read('LINESTRING(0 0, 10 10)'),
287
- read('LINESTRING(10 10, 20 20)')
288
- )))
288
+ assert_equal('MULTILINESTRING ((0 0, 10 10), (10 10, 20 20))',
289
+ write(
290
+ Geos.create_multi_line_string(
291
+ read('LINESTRING(0 0, 10 10)'),
292
+ read('LINESTRING(10 10, 20 20)')
293
+ )
294
+ ))
289
295
  end
290
296
 
291
297
  def test_create_bad_multi_line_string
@@ -303,10 +309,13 @@ class UtilsTests < Minitest::Test
303
309
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_polygon)
304
310
 
305
311
  assert_equal('MULTIPOLYGON EMPTY', write(Geos.create_multi_polygon))
306
- assert_equal('MULTIPOLYGON (((0 0, 0 5, 5 5, 5 0, 0 0)), ((10 10, 10 15, 15 15, 15 10, 10 10)))', write(Geos.create_multi_polygon(
307
- read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
308
- read('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')
309
- )))
312
+ assert_equal('MULTIPOLYGON (((0 0, 0 5, 5 5, 5 0, 0 0)), ((10 10, 10 15, 15 15, 15 10, 10 10)))',
313
+ write(
314
+ Geos.create_multi_polygon(
315
+ read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
316
+ read('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')
317
+ )
318
+ ))
310
319
  end
311
320
 
312
321
  def test_create_bad_multi_polygon
@@ -325,11 +334,12 @@ class UtilsTests < Minitest::Test
325
334
 
326
335
  assert_equal('GEOMETRYCOLLECTION EMPTY', write(Geos.create_geometry_collection))
327
336
  assert_equal('GEOMETRYCOLLECTION (POLYGON ((0 0, 0 5, 5 5, 5 0, 0 0)), POLYGON ((10 10, 10 15, 15 15, 15 10, 10 10)))',
328
- write(Geos.create_geometry_collection(
329
- read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
330
- read('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')
337
+ write(
338
+ Geos.create_geometry_collection(
339
+ read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
340
+ read('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')
341
+ )
331
342
  ))
332
- )
333
343
  end
334
344
 
335
345
  def test_create_geometry_collection_with_constants_and_symbols
@@ -339,7 +349,6 @@ class UtilsTests < Minitest::Test
339
349
  assert_kind_of(Geos::MultiLineString, Geos.create_collection(:multi_line_string))
340
350
  end
341
351
 
342
-
343
352
  def test_create_bad_geometry_collection
344
353
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_geometry_collection)
345
354
 
@@ -440,6 +449,7 @@ class UtilsTests < Minitest::Test
440
449
  [5, 5],
441
450
  [0, 5]
442
451
  ])
452
+
443
453
  Geos.create_linear_ring(cs)
444
454
  GC.start
445
455
  end
@@ -105,7 +105,7 @@ class WkbReaderTests < Minitest::Test
105
105
  def test_2d_little_endian_binary
106
106
  wkb_tester(
107
107
  'POINT(6 7)',
108
- "\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40",
108
+ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64].pack('C*'),
109
109
  Geos::GEOS_POINT,
110
110
  'Point',
111
111
  Geos::Point,
@@ -117,7 +117,7 @@ class WkbReaderTests < Minitest::Test
117
117
  def test_2d_big_endian_binary
118
118
  wkb_tester(
119
119
  'POINT (6 7)',
120
- "\x00\x00\x00\x00\x01\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00",
120
+ [0, 0, 0, 0, 1, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0].pack('C*'),
121
121
  Geos::GEOS_POINT,
122
122
  'Point',
123
123
  Geos::Point,
@@ -129,7 +129,7 @@ class WkbReaderTests < Minitest::Test
129
129
  def test_2d_little_endian_srid_binary
130
130
  wkb_tester(
131
131
  'POINT (6 7)',
132
- "\x01\x01\x00\x00\x20\x2B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40",
132
+ [1, 1, 0, 0, 32, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64].pack('C*'),
133
133
  Geos::GEOS_POINT,
134
134
  'Point',
135
135
  Geos::Point,
@@ -141,7 +141,7 @@ class WkbReaderTests < Minitest::Test
141
141
  def test_2d_big_endian_srid_binary
142
142
  wkb_tester(
143
143
  'POINT (6 7)',
144
- "\x00\x20\x00\x00\x01\x00\x00\x00\x2B\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00",
144
+ [0, 32, 0, 0, 1, 0, 0, 0, 43, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0].pack('C*'),
145
145
  Geos::GEOS_POINT,
146
146
  'Point',
147
147
  Geos::Point,
@@ -153,7 +153,7 @@ class WkbReaderTests < Minitest::Test
153
153
  def test_3d_little_endian_binary
154
154
  wkb_tester(
155
155
  'POINT Z (6 7 8)',
156
- "\x01\x01\x00\x00\x80\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40\x00\x00\x00\x00\x00\x00\x20\x40",
156
+ [1, 1, 0, 0, 128, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 32, 64].pack('C*'),
157
157
  Geos::GEOS_POINT,
158
158
  'Point',
159
159
  Geos::Point,
@@ -165,7 +165,7 @@ class WkbReaderTests < Minitest::Test
165
165
  def test_3d_big_endian_binary
166
166
  wkb_tester(
167
167
  'POINT Z (6 7 8)',
168
- "\x00\x80\x00\x00\x01\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00\x40\x20\x00\x00\x00\x00\x00\x00",
168
+ [0, 128, 0, 0, 1, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0].pack('C*'),
169
169
  Geos::GEOS_POINT,
170
170
  'Point',
171
171
  Geos::Point,
@@ -177,7 +177,7 @@ class WkbReaderTests < Minitest::Test
177
177
  def test_3d_big_endian_srid_binary
178
178
  wkb_tester(
179
179
  'POINT Z (6 7 8)',
180
- "\x00\xA0\x00\x00\x01\x00\x00\x00\x35\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00\x40\x20\x00\x00\x00\x00\x00\x00",
180
+ [0, 160, 0, 0, 1, 0, 0, 0, 53, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0].pack('C*'),
181
181
  Geos::GEOS_POINT,
182
182
  'Point',
183
183
  Geos::Point,
@@ -188,11 +188,11 @@ class WkbReaderTests < Minitest::Test
188
188
 
189
189
  def test_read_with_srid
190
190
  assert_equal(43,
191
- @wkb_reader.read("\x01\x01\x00\x00\x20\x2B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40").srid)
191
+ @wkb_reader.read([1, 1, 0, 0, 32, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64].pack('C*')).srid)
192
192
 
193
193
  assert_equal(4326,
194
194
  @wkb_reader.read(
195
- "\x01\x01\x00\x00\x20\x2B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40",
195
+ [1, 1, 0, 0, 32, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64].pack('C*'),
196
196
  srid: 4326
197
197
  ).srid)
198
198
  end
@@ -333,7 +333,7 @@ class WkbWriterTests < Minitest::Test
333
333
 
334
334
  def test_2d_big_endian_with_3d_input_binary
335
335
  wkb_tester(
336
- "\x00\x00\x00\x00\x01\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00",
336
+ [0, 0, 0, 0, 1, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0].pack('C*'),
337
337
  'POINT(6 7 8)',
338
338
  2,
339
339
  0,
@@ -345,7 +345,7 @@ class WkbWriterTests < Minitest::Test
345
345
 
346
346
  def test_2d_big_endian_with_3d_input_with_srid_binary
347
347
  wkb_tester(
348
- "\x00\x20\x00\x00\x01\x00\x00\x00\x35\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00",
348
+ [0, 32, 0, 0, 1, 0, 0, 0, 53, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0].pack('C*'),
349
349
  'POINT(6 7 8)',
350
350
  2,
351
351
  0,
@@ -357,7 +357,7 @@ class WkbWriterTests < Minitest::Test
357
357
 
358
358
  def test_3d_little_endian_with_3d_input_binary
359
359
  wkb_tester(
360
- "\x01\x01\x00\x00\x80\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40\x00\x00\x00\x00\x00\x00\x20\x40",
360
+ [1, 1, 0, 0, 128, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 32, 64].pack('C*'),
361
361
  'POINT(6 7 8)',
362
362
  3,
363
363
  1,
@@ -369,7 +369,7 @@ class WkbWriterTests < Minitest::Test
369
369
 
370
370
  def test_3d_big_endian_with_3d_input_binary
371
371
  wkb_tester(
372
- "\x00\x80\x00\x00\x01\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00\x40\x20\x00\x00\x00\x00\x00\x00",
372
+ [0, 128, 0, 0, 1, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0].pack('C*'),
373
373
  'POINT(6 7 8)',
374
374
  3,
375
375
  0,
@@ -381,7 +381,7 @@ class WkbWriterTests < Minitest::Test
381
381
 
382
382
  def test_3d_big_endian_with_3d_input_with_srid_binary
383
383
  wkb_tester(
384
- "\x00\xA0\x00\x00\x01\x00\x00\x00\x35\x40\x18\x00\x00\x00\x00\x00\x00\x40\x1C\x00\x00\x00\x00\x00\x00\x40\x20\x00\x00\x00\x00\x00\x00",
384
+ [0, 160, 0, 0, 1, 0, 0, 0, 53, 64, 24, 0, 0, 0, 0, 0, 0, 64, 28, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0].pack('C*'),
385
385
  'POINT(6 7 8)',
386
386
  3,
387
387
  0,
@@ -394,7 +394,7 @@ class WkbWriterTests < Minitest::Test
394
394
  def test_try_bad_byte_order_value_binary
395
395
  assert_raises(TypeError) do
396
396
  wkb_tester(
397
- "\x01\x01\x00\x00\x80\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40\x00\x00\x00\x00\x00\x00\x20\x40",
397
+ [1, 1, 0, 0, 128, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 32, 64].pack('C*'),
398
398
  'POINT(6 7 8)',
399
399
  3,
400
400
  'gibberish',
@@ -406,7 +406,7 @@ class WkbWriterTests < Minitest::Test
406
406
 
407
407
  assert_raises(TypeError) do
408
408
  wkb_tester(
409
- "\x01\x01\x00\x00\x80\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x1C\x40\x00\x00\x00\x00\x00\x00\x20\x40",
409
+ [1, 1, 0, 0, 128, 0, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 32, 64].pack('C*'),
410
410
  'POINT(6 7 8)',
411
411
  3,
412
412
  1000,
@@ -433,12 +433,12 @@ class WkbWriterTests < Minitest::Test
433
433
  }
434
434
 
435
435
  tester[
436
- "\x01\x01\x00\x00\x20\xE6\x10\x00\x00\x00\x00\x00\x00\x00\x00\xF0\x3F\x00\x00\x00\x00\x00\x00\x00\x40",
436
+ [1, 1, 0, 0, 32, 230, 16, 0, 0, 0, 0, 0, 0, 0, 0, 240, 63, 0, 0, 0, 0, 0, 0, 0, 64].pack('C*'),
437
437
  include_srid: true
438
438
  ]
439
439
 
440
440
  tester[
441
- "\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\x3F\x00\x00\x00\x00\x00\x00\x00\x40"
441
+ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 63, 0, 0, 0, 0, 0, 0, 0, 64].pack('C*')
442
442
  ]
443
443
  end
444
444
 
@@ -448,9 +448,11 @@ class WkbWriterTests < Minitest::Test
448
448
  geom = read('POINT(1 2 3)')
449
449
  geom.srid = 4326
450
450
 
451
- assert_equal('0101000020E6100000000000000000F03F0000000000000040', @wkb_writer.write_hex(geom,
452
- include_srid: true
453
- ))
451
+ assert_equal('0101000020E6100000000000000000F03F0000000000000040',
452
+ @wkb_writer.write_hex(
453
+ geom,
454
+ include_srid: true
455
+ ))
454
456
 
455
457
  assert_equal('0101000000000000000000F03F0000000000000040', @wkb_writer.write_hex(geom))
456
458
  end
@@ -20,7 +20,6 @@ class WktReaderTests < Minitest::Test
20
20
  Geos::GEOS_POINT,
21
21
  'Point',
22
22
  Geos::Point,
23
-
24
23
  'POINT(0 0)',
25
24
  'POINT(0 0 0)',
26
25
  'POINT Z(0 0 0)',
@@ -9,9 +9,7 @@ class WktWriterTests < Minitest::Test
9
9
  geom = read('POINT(12.3456789 98.7654321)')
10
10
  wkt = write(geom)
11
11
 
12
- x, y = if wkt =~ /^POINT\s\((\d+\.\d+)\s*(\d+\.\d+)\)$/
13
- [ Regexp.last_match[1].to_f, Regexp.last_match[2].to_f ]
14
- end
12
+ x, y = ([Regexp.last_match[1].to_f, Regexp.last_match[2].to_f] if wkt =~ /^POINT\s\((\d+\.\d+)\s*(\d+\.\d+)\)$/)
15
13
 
16
14
  assert_in_delta(12.3456789, x, TOLERANCE)
17
15
  assert_in_delta(98.7654321, y, TOLERANCE)
@@ -122,8 +120,7 @@ class WktWriterTests < Minitest::Test
122
120
 
123
121
  assert_equal('POINT Z (1 2 3)', write(geom,
124
122
  output_dimensions: 3,
125
- trim: true
126
- ))
123
+ trim: true))
127
124
 
128
125
  assert_equal('POINT (1.00 2.00)', write(geom))
129
126
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-geos
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J Smith
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-05 00:00:00.000000000 Z
11
+ date: 2022-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -31,9 +31,10 @@ extensions: []
31
31
  extra_rdoc_files:
32
32
  - README.rdoc
33
33
  files:
34
+ - ".github/workflows/main.yml"
34
35
  - ".gitignore"
35
36
  - ".rubocop.yml"
36
- - ".travis.yml"
37
+ - FUNDING.yml
37
38
  - Gemfile
38
39
  - Guardfile
39
40
  - MIT-LICENSE
@@ -62,6 +63,7 @@ files:
62
63
  - lib/ffi-geos/wkb_writer.rb
63
64
  - lib/ffi-geos/wkt_reader.rb
64
65
  - lib/ffi-geos/wkt_writer.rb
66
+ - sonar-project.properties
65
67
  - test/.rubocop.yml
66
68
  - test/coordinate_sequence_tests.rb
67
69
  - test/geometry_collection_tests.rb
@@ -85,8 +87,9 @@ files:
85
87
  homepage: http://github.com/dark-panda/ffi-geos
86
88
  licenses:
87
89
  - MIT
88
- metadata: {}
89
- post_install_message:
90
+ metadata:
91
+ rubygems_mfa_required: 'true'
92
+ post_install_message:
90
93
  rdoc_options: []
91
94
  require_paths:
92
95
  - lib
@@ -94,16 +97,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
97
  requirements:
95
98
  - - ">="
96
99
  - !ruby/object:Gem::Version
97
- version: '0'
100
+ version: '2.5'
98
101
  required_rubygems_version: !ruby/object:Gem::Requirement
99
102
  requirements:
100
103
  - - ">="
101
104
  - !ruby/object:Gem::Version
102
105
  version: '0'
103
106
  requirements: []
104
- rubyforge_project:
105
- rubygems_version: 2.7.6
106
- signing_key:
107
+ rubygems_version: 3.2.32
108
+ signing_key:
107
109
  specification_version: 4
108
110
  summary: An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).
109
111
  test_files:
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- cache: bundler
2
- sudo: false
3
- language: ruby
4
- rvm:
5
- - 2.5.3
6
- - 2.4.5
7
- - 2.3.8
8
- - 2.2.10
9
- - rbx-3
10
- - jruby-head
11
- matrix:
12
- allow_failures:
13
- - rvm: rbx-3
14
- - rvm: jruby-head
15
- addons:
16
- apt:
17
- packages:
18
- - libgeos-c1
19
- before_install:
20
- - gem update --system
21
- - gem install bundler