ffi-geos 1.2.1 → 1.2.2

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