ffi-geos 1.2.2 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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