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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +49 -0
- data/.rubocop.yml +5117 -4
- data/FUNDING.yml +2 -0
- data/Gemfile +9 -16
- data/Guardfile +3 -4
- data/MIT-LICENSE +1 -1
- data/README.rdoc +2 -20
- data/Rakefile +3 -2
- data/ffi-geos.gemspec +7 -2
- data/lib/ffi-geos/buffer_params.rb +1 -1
- data/lib/ffi-geos/coordinate_sequence.rb +179 -177
- data/lib/ffi-geos/geometry.rb +118 -31
- data/lib/ffi-geos/geometry_collection.rb +26 -12
- data/lib/ffi-geos/interrupt.rb +11 -14
- data/lib/ffi-geos/line_string.rb +64 -49
- data/lib/ffi-geos/multi_line_string.rb +1 -1
- data/lib/ffi-geos/point.rb +18 -18
- data/lib/ffi-geos/polygon.rb +44 -30
- data/lib/ffi-geos/prepared_geometry.rb +1 -1
- data/lib/ffi-geos/strtree.rb +28 -30
- data/lib/ffi-geos/tools.rb +1 -1
- data/lib/ffi-geos/utils.rb +16 -23
- data/lib/ffi-geos/version.rb +1 -1
- data/lib/ffi-geos/wkb_reader.rb +1 -1
- data/lib/ffi-geos/wkb_writer.rb +4 -5
- data/lib/ffi-geos/wkt_reader.rb +1 -1
- data/lib/ffi-geos/wkt_writer.rb +7 -13
- data/lib/ffi-geos.rb +134 -48
- data/sonar-project.properties +16 -0
- data/test/coordinate_sequence_tests.rb +148 -126
- data/test/geometry_collection_tests.rb +41 -67
- data/test/geometry_tests.rb +341 -40
- data/test/interrupt_tests.rb +7 -7
- data/test/line_string_tests.rb +23 -15
- data/test/point_tests.rb +5 -5
- data/test/polygon_tests.rb +6 -7
- data/test/prepared_geometry_tests.rb +8 -8
- data/test/strtree_tests.rb +13 -12
- data/test/test_helper.rb +74 -56
- data/test/utils_tests.rb +69 -59
- data/test/wkb_reader_tests.rb +9 -9
- data/test/wkb_writer_tests.rb +14 -12
- data/test/wkt_reader_tests.rb +0 -1
- data/test/wkt_writer_tests.rb +2 -5
- metadata +12 -10
- 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,
|
26
|
-
assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10,
|
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([[
|
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
|
-
[
|
79
|
-
[
|
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
|
-
[[
|
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
|
-
[
|
129
|
-
[
|
130
|
-
[
|
131
|
-
[
|
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
|
-
[[
|
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
|
-
[
|
182
|
-
[
|
183
|
-
[
|
184
|
-
[
|
185
|
-
[
|
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
|
-
[
|
200
|
-
[
|
201
|
-
[
|
202
|
-
[
|
203
|
-
[
|
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
|
-
[
|
208
|
-
[
|
209
|
-
[
|
210
|
-
[
|
211
|
-
[
|
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
|
-
[
|
224
|
-
[
|
225
|
-
[
|
226
|
-
[
|
227
|
-
[
|
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
|
-
[
|
232
|
-
[
|
233
|
-
[
|
234
|
-
[
|
235
|
-
[
|
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
|
-
[
|
240
|
-
[
|
241
|
-
[
|
242
|
-
[
|
243
|
-
[
|
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, [
|
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)',
|
265
|
-
|
266
|
-
|
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))',
|
286
|
-
|
287
|
-
|
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)))',
|
307
|
-
|
308
|
-
|
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(
|
329
|
-
|
330
|
-
|
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
|
data/test/wkb_reader_tests.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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(
|
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
|
-
|
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
|
data/test/wkb_writer_tests.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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',
|
452
|
-
|
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
|
data/test/wkt_reader_tests.rb
CHANGED
data/test/wkt_writer_tests.rb
CHANGED
@@ -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:
|
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:
|
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
|
-
-
|
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
|
-
|
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: '
|
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
|
-
|
105
|
-
|
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
|