ffi-geos 1.2.1 → 1.2.2

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 (49) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +20 -0
  3. data/.travis.yml +7 -3
  4. data/Gemfile +1 -1
  5. data/Guardfile +4 -5
  6. data/ffi-geos.gemspec +1 -1
  7. data/lib/ffi-geos.rb +212 -196
  8. data/lib/ffi-geos/buffer_params.rb +9 -20
  9. data/lib/ffi-geos/coordinate_sequence.rb +342 -58
  10. data/lib/ffi-geos/geometry.rb +167 -178
  11. data/lib/ffi-geos/geometry_collection.rb +60 -12
  12. data/lib/ffi-geos/interrupt.rb +2 -4
  13. data/lib/ffi-geos/line_string.rb +146 -37
  14. data/lib/ffi-geos/linear_ring.rb +2 -3
  15. data/lib/ffi-geos/multi_line_string.rb +1 -2
  16. data/lib/ffi-geos/multi_point.rb +0 -1
  17. data/lib/ffi-geos/multi_polygon.rb +0 -1
  18. data/lib/ffi-geos/point.rb +69 -14
  19. data/lib/ffi-geos/polygon.rb +110 -21
  20. data/lib/ffi-geos/prepared_geometry.rb +11 -12
  21. data/lib/ffi-geos/strtree.rb +41 -52
  22. data/lib/ffi-geos/tools.rb +15 -18
  23. data/lib/ffi-geos/utils.rb +27 -44
  24. data/lib/ffi-geos/version.rb +1 -3
  25. data/lib/ffi-geos/wkb_reader.rb +4 -9
  26. data/lib/ffi-geos/wkb_writer.rb +14 -18
  27. data/lib/ffi-geos/wkt_reader.rb +2 -5
  28. data/lib/ffi-geos/wkt_writer.rb +17 -22
  29. data/test/.rubocop.yml +36 -0
  30. data/test/coordinate_sequence_tests.rb +263 -14
  31. data/test/geometry_collection_tests.rb +412 -1
  32. data/test/geometry_tests.rb +156 -86
  33. data/test/interrupt_tests.rb +2 -4
  34. data/test/line_string_tests.rb +212 -23
  35. data/test/linear_ring_tests.rb +1 -2
  36. data/test/misc_tests.rb +28 -29
  37. data/test/multi_line_string_tests.rb +0 -1
  38. data/test/point_tests.rb +158 -1
  39. data/test/polygon_tests.rb +284 -1
  40. data/test/prepared_geometry_tests.rb +1 -3
  41. data/test/strtree_tests.rb +9 -10
  42. data/test/test_helper.rb +49 -18
  43. data/test/tools_tests.rb +1 -3
  44. data/test/utils_tests.rb +22 -22
  45. data/test/wkb_reader_tests.rb +10 -9
  46. data/test/wkb_writer_tests.rb +5 -13
  47. data/test/wkt_reader_tests.rb +1 -2
  48. data/test/wkt_writer_tests.rb +9 -14
  49. metadata +6 -3
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -24,7 +23,7 @@ class ToolsTests < Minitest::Test
24
23
  def test_bool_to_int
25
24
  assert_equal(1, Geos::Tools.bool_to_int(1))
26
25
  assert_equal(1, Geos::Tools.bool_to_int(true))
27
- assert_equal(1, Geos::Tools.bool_to_int(""))
26
+ assert_equal(1, Geos::Tools.bool_to_int(''))
28
27
  assert_equal(1, Geos::Tools.bool_to_int(0))
29
28
  assert_equal(0, Geos::Tools.bool_to_int(false))
30
29
  assert_equal(0, Geos::Tools.bool_to_int(nil))
@@ -91,4 +90,3 @@ class ToolsTests < Minitest::Test
91
90
  assert_equal(:round, Geos::Tools.symbol_for_enum(Geos::BufferCapStyles, 1))
92
91
  end
93
92
  end
94
-
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -14,17 +13,17 @@ class UtilsTests < Minitest::Test
14
13
  def test_orientation_index
15
14
  skip unless ENV['FORCE_TESTS'] || (defined?(Geos::Utils) && Geos::Utils.respond_to?(:orientation_index))
16
15
 
17
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 5, 0))
18
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 10, 0))
19
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 0, 0))
20
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, -5, 0))
21
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 20, 0))
22
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 6))
23
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 20))
24
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 3))
25
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, -2))
26
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 1000000, 1000001))
27
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 1000000, 999999))
16
+ assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 5, 0))
17
+ assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 10, 0))
18
+ assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 0, 0))
19
+ assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, -5, 0))
20
+ assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 20, 0))
21
+ assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 6))
22
+ assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 20))
23
+ assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 3))
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))
28
27
  end
29
28
 
30
29
  def test_relate_match
@@ -58,7 +57,7 @@ class UtilsTests < Minitest::Test
58
57
  end
59
58
 
60
59
  def test_create_point_with_x_y_and_z_arguments
61
- assert_equal('POINT Z (10 20 30)', write(Geos.create_point(10, 20, 30), :output_dimensions => 3))
60
+ assert_equal('POINT Z (10 20 30)', write(Geos.create_point(10, 20, 30), output_dimensions: 3))
62
61
  end
63
62
 
64
63
  def test_create_point_with_too_many_arguments
@@ -76,8 +75,8 @@ class UtilsTests < Minitest::Test
76
75
 
77
76
  def test_create_line_string
78
77
  cs = Geos::CoordinateSequence.new([
79
- [ 10, 20, 30 ],
80
- [ 30, 20, 10 ]
78
+ [ 10, 20, 30 ],
79
+ [ 30, 20, 10 ]
81
80
  ])
82
81
 
83
82
  writer.output_dimensions = 3
@@ -120,7 +119,7 @@ class UtilsTests < Minitest::Test
120
119
  def test_create_bad_line_string
121
120
  cs = Geos::CoordinateSequence.new(1, 0)
122
121
  assert_raises(ArgumentError) do
123
- Geos::create_line_string(cs)
122
+ Geos.create_line_string(cs)
124
123
  end
125
124
  end
126
125
 
@@ -173,7 +172,7 @@ class UtilsTests < Minitest::Test
173
172
  cs = Geos::CoordinateSequence.new(1, 0)
174
173
 
175
174
  assert_raises(ArgumentError) do
176
- Geos::create_linear_ring(cs)
175
+ Geos.create_linear_ring(cs)
177
176
  end
178
177
  end
179
178
 
@@ -186,9 +185,9 @@ class UtilsTests < Minitest::Test
186
185
  [ 0, 0 ]
187
186
  ])
188
187
 
189
- exterior_ring = Geos::create_linear_ring(cs)
188
+ exterior_ring = Geos.create_linear_ring(cs)
190
189
 
191
- geom = Geos::create_polygon(exterior_ring)
190
+ geom = Geos.create_polygon(exterior_ring)
192
191
  assert_instance_of(Geos::Polygon, geom)
193
192
  assert_equal('Polygon', geom.geom_type)
194
193
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -212,7 +211,7 @@ class UtilsTests < Minitest::Test
212
211
  [ 2, 2 ]
213
212
  )
214
213
 
215
- geom = Geos::create_polygon(outer, inner)
214
+ geom = Geos.create_polygon(outer, inner)
216
215
  assert_instance_of(Geos::Polygon, geom)
217
216
  assert_equal('Polygon', geom.geom_type)
218
217
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -244,7 +243,7 @@ class UtilsTests < Minitest::Test
244
243
  [ 6, 6 ]
245
244
  )
246
245
 
247
- geom = Geos::create_polygon(exterior_ring, [ hole_1, hole_2 ])
246
+ geom = Geos.create_polygon(exterior_ring, [ hole_1, hole_2 ])
248
247
  assert_instance_of(Geos::Polygon, geom)
249
248
  assert_equal('Polygon', geom.geom_type)
250
249
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -340,6 +339,7 @@ class UtilsTests < Minitest::Test
340
339
  assert_kind_of(Geos::MultiLineString, Geos.create_collection(:multi_line_string))
341
340
  end
342
341
 
342
+
343
343
  def test_create_bad_geometry_collection
344
344
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_geometry_collection)
345
345
 
@@ -355,7 +355,7 @@ class UtilsTests < Minitest::Test
355
355
  def test_create_geometry_collection_with_options
356
356
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_geometry_collection)
357
357
 
358
- geom = Geos.create_collection(:multi_line_string, :srid => 4326)
358
+ geom = Geos.create_collection(:multi_line_string, srid: 4326)
359
359
 
360
360
  assert_kind_of(Geos::MultiLineString, geom)
361
361
  assert_equal(4326, geom.srid)
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -192,9 +191,10 @@ class WkbReaderTests < Minitest::Test
192
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)
193
192
 
194
193
  assert_equal(4326,
195
- @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", {
196
- :srid => 4326
197
- }).srid)
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",
196
+ srid: 4326
197
+ ).srid)
198
198
  end
199
199
 
200
200
  def test_read_hex_srid
@@ -202,20 +202,21 @@ class WkbReaderTests < Minitest::Test
202
202
  @wkb_reader.read_hex('01010000202B00000000000000000018400000000000001C40').srid)
203
203
 
204
204
  assert_equal(4326,
205
- @wkb_reader.read_hex('01010000202B00000000000000000018400000000000001C40', {
206
- :srid => 4326
207
- }).srid)
205
+ @wkb_reader.read_hex(
206
+ '01010000202B00000000000000000018400000000000001C40',
207
+ srid: 4326
208
+ ).srid)
208
209
  end
209
210
 
210
211
  def test_read_parse_error
211
212
  assert_raises(Geos::WkbReader::ParseError) do
212
- @wkb_reader.read("FOO")
213
+ @wkb_reader.read('FOO')
213
214
  end
214
215
  end
215
216
 
216
217
  def test_read_hex_parse_error
217
218
  assert_raises(Geos::WkbReader::ParseError) do
218
- @wkb_reader.read_hex("FOO")
219
+ @wkb_reader.read_hex('FOO')
219
220
  end
220
221
  end
221
222
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -121,8 +120,6 @@ class WkbWriterTests < Minitest::Test
121
120
  )
122
121
  end
123
122
 
124
-
125
-
126
123
  def test_2d_little_endian_with_3d_input
127
124
  wkb_tester(
128
125
  '010100000000000000000018400000000000001C40',
@@ -145,8 +142,6 @@ class WkbWriterTests < Minitest::Test
145
142
  )
146
143
  end
147
144
 
148
-
149
-
150
145
  def test_2d_big_endian_with_3d_input
151
146
  wkb_tester(
152
147
  '00000000014018000000000000401C000000000000',
@@ -314,8 +309,6 @@ class WkbWriterTests < Minitest::Test
314
309
  )
315
310
  end
316
311
 
317
-
318
-
319
312
  def test_2d_little_endian_with_3d_input_binary
320
313
  wkb_tester(
321
314
  '010100000000000000000018400000000000001C40',
@@ -440,9 +433,8 @@ class WkbWriterTests < Minitest::Test
440
433
  }
441
434
 
442
435
  tester[
443
- "\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", {
444
- :include_srid => true
445
- }
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",
437
+ include_srid: true
446
438
  ]
447
439
 
448
440
  tester[
@@ -456,9 +448,9 @@ class WkbWriterTests < Minitest::Test
456
448
  geom = read('POINT(1 2 3)')
457
449
  geom.srid = 4326
458
450
 
459
- assert_equal('0101000020E6100000000000000000F03F0000000000000040', @wkb_writer.write_hex(geom, {
460
- :include_srid => true
461
- }))
451
+ assert_equal('0101000020E6100000000000000000F03F0000000000000040', @wkb_writer.write_hex(geom,
452
+ include_srid: true
453
+ ))
462
454
 
463
455
  assert_equal('0101000000000000000000F03F0000000000000040', @wkb_writer.write_hex(geom))
464
456
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -121,6 +120,6 @@ class WktReaderTests < Minitest::Test
121
120
 
122
121
  def test_read_with_srid
123
122
  assert_equal(0, read('POINT (0 0)').srid)
124
- assert_equal(4326, read('POINT (0 0)', :srid => 4326).srid)
123
+ assert_equal(4326, read('POINT (0 0)', srid: 4326).srid)
125
124
  end
126
125
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'test_helper'
@@ -11,7 +10,7 @@ class WktWriterTests < Minitest::Test
11
10
  wkt = write(geom)
12
11
 
13
12
  x, y = if wkt =~ /^POINT\s\((\d+\.\d+)\s*(\d+\.\d+)\)$/
14
- [ $1.to_f, $2.to_f ]
13
+ [ Regexp.last_match[1].to_f, Regexp.last_match[2].to_f ]
15
14
  end
16
15
 
17
16
  assert_in_delta(12.3456789, x, TOLERANCE)
@@ -117,18 +116,14 @@ class WktWriterTests < Minitest::Test
117
116
  @writer.rounding_precision = 2
118
117
 
119
118
  geom = read('POINT(1 2 3)')
120
- assert_equal('POINT (1 2)', write(geom, {
121
- :trim => true
122
- }))
123
-
124
- assert_equal('POINT (1.0000 2.0000)', write(geom, {
125
- :rounding_precision => 4
126
- }))
127
-
128
- assert_equal('POINT Z (1 2 3)', write(geom, {
129
- :output_dimensions => 3,
130
- :trim => true
131
- }))
119
+ assert_equal('POINT (1 2)', write(geom, trim: true))
120
+
121
+ assert_equal('POINT (1.0000 2.0000)', write(geom, rounding_precision: 4))
122
+
123
+ assert_equal('POINT Z (1 2 3)', write(geom,
124
+ output_dimensions: 3,
125
+ trim: true
126
+ ))
132
127
 
133
128
  assert_equal('POINT (1.00 2.00)', write(geom))
134
129
  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.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - J Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-08 00:00:00.000000000 Z
11
+ date: 2018-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -32,6 +32,7 @@ extra_rdoc_files:
32
32
  - README.rdoc
33
33
  files:
34
34
  - ".gitignore"
35
+ - ".rubocop.yml"
35
36
  - ".travis.yml"
36
37
  - Gemfile
37
38
  - Guardfile
@@ -61,6 +62,7 @@ files:
61
62
  - lib/ffi-geos/wkb_writer.rb
62
63
  - lib/ffi-geos/wkt_reader.rb
63
64
  - lib/ffi-geos/wkt_writer.rb
65
+ - test/.rubocop.yml
64
66
  - test/coordinate_sequence_tests.rb
65
67
  - test/geometry_collection_tests.rb
66
68
  - test/geometry_tests.rb
@@ -100,11 +102,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
102
  version: '0'
101
103
  requirements: []
102
104
  rubyforge_project:
103
- rubygems_version: 2.6.13
105
+ rubygems_version: 2.7.6
104
106
  signing_key:
105
107
  specification_version: 4
106
108
  summary: An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).
107
109
  test_files:
110
+ - test/.rubocop.yml
108
111
  - test/coordinate_sequence_tests.rb
109
112
  - test/geometry_collection_tests.rb
110
113
  - test/geometry_tests.rb