ffi-geos 1.2.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +4851 -0
  3. data/.travis.yml +24 -9
  4. data/FUNDING.yml +2 -0
  5. data/Gemfile +12 -16
  6. data/Guardfile +6 -8
  7. data/MIT-LICENSE +1 -1
  8. data/README.rdoc +2 -20
  9. data/Rakefile +4 -2
  10. data/ffi-geos.gemspec +13 -14
  11. data/lib/ffi-geos.rb +342 -244
  12. data/lib/ffi-geos/buffer_params.rb +9 -20
  13. data/lib/ffi-geos/coordinate_sequence.rb +351 -65
  14. data/lib/ffi-geos/geometry.rb +267 -191
  15. data/lib/ffi-geos/geometry_collection.rb +74 -12
  16. data/lib/ffi-geos/interrupt.rb +11 -16
  17. data/lib/ffi-geos/line_string.rb +157 -33
  18. data/lib/ffi-geos/linear_ring.rb +2 -3
  19. data/lib/ffi-geos/multi_line_string.rb +1 -2
  20. data/lib/ffi-geos/multi_point.rb +0 -1
  21. data/lib/ffi-geos/multi_polygon.rb +0 -1
  22. data/lib/ffi-geos/point.rb +70 -15
  23. data/lib/ffi-geos/polygon.rb +124 -21
  24. data/lib/ffi-geos/prepared_geometry.rb +11 -12
  25. data/lib/ffi-geos/strtree.rb +64 -77
  26. data/lib/ffi-geos/tools.rb +16 -19
  27. data/lib/ffi-geos/utils.rb +36 -60
  28. data/lib/ffi-geos/version.rb +1 -3
  29. data/lib/ffi-geos/wkb_reader.rb +4 -9
  30. data/lib/ffi-geos/wkb_writer.rb +15 -20
  31. data/lib/ffi-geos/wkt_reader.rb +2 -5
  32. data/lib/ffi-geos/wkt_writer.rb +20 -31
  33. data/sonar-project.properties +16 -0
  34. data/test/.rubocop.yml +36 -0
  35. data/test/coordinate_sequence_tests.rb +322 -52
  36. data/test/geometry_collection_tests.rb +388 -4
  37. data/test/geometry_tests.rb +466 -121
  38. data/test/interrupt_tests.rb +9 -12
  39. data/test/line_string_tests.rb +213 -25
  40. data/test/linear_ring_tests.rb +1 -3
  41. data/test/misc_tests.rb +28 -30
  42. data/test/multi_line_string_tests.rb +0 -2
  43. data/test/point_tests.rb +158 -2
  44. data/test/polygon_tests.rb +283 -2
  45. data/test/prepared_geometry_tests.rb +8 -11
  46. data/test/strtree_tests.rb +14 -15
  47. data/test/test_helper.rb +75 -51
  48. data/test/tools_tests.rb +1 -4
  49. data/test/utils_tests.rb +85 -76
  50. data/test/wkb_reader_tests.rb +18 -18
  51. data/test/wkb_writer_tests.rb +15 -22
  52. data/test/wkt_reader_tests.rb +1 -4
  53. data/test/wkt_writer_tests.rb +8 -17
  54. metadata +11 -7
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
- $: << File.dirname(__FILE__)
5
3
  require 'test_helper'
6
4
 
7
5
  class PreparedGeometryTests < Minitest::Test
@@ -19,14 +17,14 @@ class PreparedGeometryTests < Minitest::Test
19
17
 
20
18
  def relationship_tester(method, *expected)
21
19
  [
22
- [ POINT_A, POINT_A ],
23
- [ POINT_A, LINESTRING_A ],
24
- [ POINT_B, LINESTRING_A ],
25
- [ LINESTRING_B, LINESTRING_A ],
26
- [ LINESTRING_C, LINESTRING_A ],
27
- [ LINESTRING_D, LINESTRING_A ],
28
- [ POLYGON_A, POLYGON_B ],
29
- [ POLYGON_A, POINT_C ],
20
+ [POINT_A, POINT_A],
21
+ [POINT_A, LINESTRING_A],
22
+ [POINT_B, LINESTRING_A],
23
+ [LINESTRING_B, LINESTRING_A],
24
+ [LINESTRING_C, LINESTRING_A],
25
+ [LINESTRING_D, LINESTRING_A],
26
+ [POLYGON_A, POLYGON_B],
27
+ [POLYGON_A, POINT_C]
30
28
  ].each_with_index do |(geom_a, geom_b), i|
31
29
  geom_a = read(geom_a).to_prepared
32
30
  geom_b = read(geom_b)
@@ -114,4 +112,3 @@ class PreparedGeometryTests < Minitest::Test
114
112
  end
115
113
  end
116
114
  end
117
-
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
- $: << File.dirname(__FILE__)
5
3
  require 'test_helper'
6
4
 
7
5
  class STRtreeTests < Minitest::Test
@@ -9,8 +7,8 @@ class STRtreeTests < Minitest::Test
9
7
 
10
8
  def setup_tree
11
9
  @tree = Geos::STRtree.new(3)
12
- @item_1 = { :item_1 => :test }
13
- @item_2 = [ :test ]
10
+ @item_1 = { item_1: :test }
11
+ @item_2 = [:test]
14
12
  @item_3 = Object.new
15
13
 
16
14
  @geom_1 = read('LINESTRING(0 0, 10 10)')
@@ -83,7 +81,7 @@ class STRtreeTests < Minitest::Test
83
81
 
84
82
  assert_equal(
85
83
  [
86
- { :item => @item_1, :geometry => @geom_1 }
84
+ { item: @item_1, geometry: @geom_1 }
87
85
  ],
88
86
  @tree.query(read('LINESTRING(5 5, 6 6)'), :all)
89
87
  )
@@ -93,17 +91,17 @@ class STRtreeTests < Minitest::Test
93
91
 
94
92
  assert_equal(
95
93
  [
96
- { :item => @item_2, :geometry => @geom_2 },
97
- { :item => @item_3, :geometry => @geom_3 }
94
+ { item: @item_2, geometry: @geom_2 },
95
+ { item: @item_3, geometry: @geom_3 }
98
96
  ],
99
97
  @tree.query(read('LINESTRING(25 25, 26 26)'), :all)
100
98
  )
101
99
 
102
100
  assert_equal(
103
101
  [
104
- { :item => @item_1, :geometry => @geom_1 },
105
- { :item => @item_2, :geometry => @geom_2 },
106
- { :item => @item_3, :geometry => @geom_3 }
102
+ { item: @item_1, geometry: @geom_1 },
103
+ { item: @item_2, geometry: @geom_2 },
104
+ { item: @item_3, geometry: @geom_3 }
107
105
  ],
108
106
  @tree.query(read('LINESTRING(0 0, 100 100)'), :all)
109
107
  )
@@ -185,9 +183,9 @@ class STRtreeTests < Minitest::Test
185
183
  skip unless ENV['FORCE_TESTS'] || defined?(Geos::STRtree)
186
184
 
187
185
  tree = Geos::STRtree.new(
188
- [ read('LINESTRING(0 0, 10 10)'), item_1 = { :item_1 => :test } ],
189
- [ read('LINESTRING(20 20, 30 30)'), item_2 = [ :test ] ],
190
- [ read('LINESTRING(20 20, 30 30)'), item_3 = Object.new ]
186
+ [read('LINESTRING(0 0, 10 10)'), item_1 = { item_1: :test }],
187
+ [read('LINESTRING(20 20, 30 30)'), item_2 = [:test]],
188
+ [read('LINESTRING(20 20, 30 30)'), item_3 = Object.new]
191
189
  )
192
190
 
193
191
  assert_equal([item_1],
@@ -315,6 +313,7 @@ class STRtreeTests < Minitest::Test
315
313
 
316
314
  def test_nearest_with_only_empty_geometries
317
315
  skip unless ENV['FORCE_TESTS'] || defined?(Geos::STRtree) && Geos::STRtree.method_defined?(:nearest)
316
+ skip if Geos::GEOS_VERSION > '3.9.0'
318
317
 
319
318
  geom_1 = read('LINESTRING EMPTY')
320
319
  geom_2 = read('POINT (2 7)')
@@ -347,8 +346,8 @@ class STRtreeTests < Minitest::Test
347
346
  geom_3 = read('POINT (5 4)')
348
347
  geom_4 = read('POINT (3 8)')
349
348
 
350
- item_1 = { :item_1 => :test }
351
- item_2 = [ :test ]
349
+ item_1 = { item_1: :test }
350
+ item_2 = [:test]
352
351
  item_3 = Object.new
353
352
 
354
353
  tree = Geos::STRtree.new(2)
data/test/test_helper.rb CHANGED
@@ -1,20 +1,17 @@
1
- # encoding: BINARY
2
1
  # frozen_string_literal: true
3
2
 
4
- if RUBY_VERSION >= '1.9'
5
- require 'simplecov'
3
+ require 'simplecov'
6
4
 
7
- SimpleCov.command_name('Unit Tests')
8
- SimpleCov.merge_timeout(3600)
9
- SimpleCov.start do
10
- add_filter '/test/'
11
- add_filter '/.bundle/'
12
- end
5
+ SimpleCov.command_name('Unit Tests')
6
+ SimpleCov.merge_timeout(3600)
7
+ SimpleCov.start do
8
+ add_filter '/test/'
9
+ add_filter '/.bundle/'
13
10
  end
14
11
 
15
12
  require 'rubygems'
16
13
  require 'minitest/autorun'
17
- require 'minitest/reporters' if RUBY_VERSION >= '1.9'
14
+ require 'minitest/reporters'
18
15
 
19
16
  if ENV['USE_BINARY_GEOS']
20
17
  require 'geos'
@@ -32,14 +29,21 @@ else
32
29
  end
33
30
 
34
31
  puts "ffi-geos version #{Geos::VERSION}" if defined?(Geos::VERSION)
35
-
36
- if defined?(Geos::FFIGeos)
37
- puts "Using #{Geos::FFIGeos.geos_library_path}"
38
- end
32
+ puts "Using #{Geos::FFIGeos.geos_library_path}" if defined?(Geos::FFIGeos)
39
33
 
40
34
  module TestHelper
41
35
  TOLERANCE = 0.0000000000001
42
36
 
37
+ EMPTY_GEOMETRY = if Geos::GEOS_VERSION > '3.8'
38
+ 'POINT EMPTY'
39
+ else
40
+ 'GEOMETRYCOLLECTION EMPTY'
41
+ end
42
+
43
+ EMPTY_BLOCK = proc do
44
+ nil
45
+ end
46
+
43
47
  def self.included(base)
44
48
  base.class_eval do
45
49
  attr_reader :reader, :reader_hex, :writer
@@ -53,16 +57,16 @@ module TestHelper
53
57
  @writer = Geos::WktWriter.new
54
58
  end
55
59
 
56
- def read(*args)
57
- if args[0][0] != '0'
58
- reader.read(*args)
60
+ def read(*args, **options)
61
+ if args[0][0] == '0'
62
+ reader_hex.read_hex(*args, **options)
59
63
  else
60
- reader_hex.read_hex(*args)
64
+ reader.read(*args, **options)
61
65
  end
62
66
  end
63
67
 
64
- def write(*args)
65
- writer.write(*args)
68
+ def write(*args, **options)
69
+ writer.write(*args, **options)
66
70
  end
67
71
 
68
72
  def geom_from_geom_or_wkt(geom_or_wkt)
@@ -73,11 +77,11 @@ module TestHelper
73
77
  end
74
78
  end
75
79
 
76
- def srid_copy_tester(method, expected, expected_srid, srid_policy, wkt, *args)
80
+ def srid_copy_tester(method, expected, expected_srid, srid_policy, wkt, *args, **options)
77
81
  geom = read(wkt)
78
82
  geom.srid = 4326
79
83
  Geos.srid_copy_policy = srid_policy
80
- geom_b = geom.send(method, *args)
84
+ geom_b = geom.send(method, *args, **options)
81
85
  assert_equal(4326, geom.srid)
82
86
  assert_equal(expected_srid, geom_b.srid)
83
87
  assert_equal(expected, write(geom_b))
@@ -86,14 +90,14 @@ module TestHelper
86
90
  end
87
91
 
88
92
  {
89
- :empty => 'to be empty',
90
- :valid => 'to be valid',
91
- :simple => 'to be simple',
92
- :ring => 'to be ring',
93
- :closed => 'to be closed',
94
- :has_z => 'to have z dimension'
93
+ empty: 'to be empty',
94
+ valid: 'to be valid',
95
+ simple: 'to be simple',
96
+ ring: 'to be ring',
97
+ closed: 'to be closed',
98
+ has_z: 'to have z dimension'
95
99
  }.each do |t, m|
96
- self.class_eval(<<-EOF, __FILE__, __LINE__ + 1)
100
+ class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
97
101
  def assert_geom_#{t}(geom)
98
102
  assert(geom.#{t}?, "Expected geom #{m}")
99
103
  end
@@ -101,62 +105,82 @@ module TestHelper
101
105
  def refute_geom_#{t}(geom)
102
106
  assert(!geom.#{t}?, "Did not expect geom #{m}")
103
107
  end
104
- EOF
108
+ RUBY
105
109
  end
106
110
 
107
111
  def assert_geom_eql_exact(geom, result, tolerance = TOLERANCE)
108
112
  assert(geom.eql_exact?(result, tolerance), "Expected geom.eql_exact? to be within #{tolerance}")
109
113
  end
110
114
 
111
- def simple_tester(method, expected, geom, *args)
115
+ def snapped_tester(method, expected, geom, *args, **options)
112
116
  geom = geom_from_geom_or_wkt(geom)
113
- result = geom.send(method, *args)
114
117
 
115
- if result.is_a?(Geos::Geometry)
116
- result = write(result)
117
- end
118
+ result = geom.send(method, *args, **options)
119
+ assert_equal(expected, write(result.snap_to_grid(1)))
120
+ end
118
121
 
119
- assert_equal(expected, result)
122
+ def simple_tester(method, expected, geom, *args, **options)
123
+ geom = geom_from_geom_or_wkt(geom)
124
+ result = geom.send(method, *args, **options)
125
+ result = write(result) if result.is_a?(Geos::Geometry)
126
+
127
+ if expected.nil?
128
+ assert_nil(result)
129
+ else
130
+ assert_equal(expected, result)
131
+ end
120
132
  end
121
133
 
122
- def simple_bang_tester(method, expected, wkt, *args)
134
+ def simple_bang_tester(method, expected, wkt, *args, **options)
123
135
  geom = read(wkt)
124
- result = geom.send(method, *args)
136
+ result = geom.send(method, *args, **options)
125
137
 
126
138
  assert_equal(wkt, write(geom))
127
139
  assert_equal(expected, write(result))
128
140
 
129
141
  geom = read(wkt)
130
- geom.send("#{method}!", *args)
142
+ geom.send("#{method}!", *args, **options)
131
143
 
132
144
  assert_equal(expected, write(geom))
133
145
  end
134
146
 
135
- def comparison_tester(method, expected, geom_a, geom_b, *args)
136
- geom_a = geom_from_geom_or_wkt(geom_a)
137
- geom_b = geom_from_geom_or_wkt(geom_b)
147
+ def comparison_tester(method, expected, geom_a, geom_b, *args, **options)
148
+ geom_a = geom_from_geom_or_wkt(geom_a).normalize
149
+ geom_b = geom_from_geom_or_wkt(geom_b).normalize
138
150
 
139
- simple_tester(method, expected, geom_a, geom_b, *args)
151
+ simple_tester(method, expected, geom_a, geom_b, *args, **options)
140
152
  end
141
153
 
142
- def array_tester(method, expected, geom, *args)
154
+ def array_tester(method, expected, geom, *args, **options)
143
155
  geom = geom_from_geom_or_wkt(geom)
144
- result = geom.send(method, *args)
156
+ result = geom.send(method, *args, **options)
145
157
 
146
158
  case result
147
159
  when Geos::Geometry
148
- result = [ write(result) ]
160
+ result = [write(result)]
149
161
  when Array
150
- result = result.collect { |r|
162
+ result = result.collect do |r|
151
163
  write(r)
152
- }
164
+ end
153
165
  end
154
166
 
155
167
  assert_equal(expected, result)
156
168
  end
157
- end
158
169
 
159
- if RUBY_VERSION >= '1.9'
160
- Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
170
+ def affine_tester(method, expected, wkt, *args, **options)
171
+ writer.trim = true
172
+
173
+ geom = read(wkt)
174
+ geom.send("#{method}!", *args, **options).snap_to_grid!(0.1)
175
+
176
+ assert_equal(expected, write(geom))
177
+
178
+ geom = read(wkt)
179
+ geom_2 = geom.send(method, *args, **options).snap_to_grid(0.1)
180
+
181
+ assert_equal(wkt, write(geom))
182
+ assert_equal(expected, write(geom_2, trim: true))
183
+ end
161
184
  end
162
185
 
186
+ Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
data/test/tools_tests.rb CHANGED
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
- $: << File.dirname(__FILE__)
5
3
  require 'test_helper'
6
4
 
7
5
  class ToolsTests < Minitest::Test
@@ -25,7 +23,7 @@ class ToolsTests < Minitest::Test
25
23
  def test_bool_to_int
26
24
  assert_equal(1, Geos::Tools.bool_to_int(1))
27
25
  assert_equal(1, Geos::Tools.bool_to_int(true))
28
- assert_equal(1, Geos::Tools.bool_to_int(""))
26
+ assert_equal(1, Geos::Tools.bool_to_int(''))
29
27
  assert_equal(1, Geos::Tools.bool_to_int(0))
30
28
  assert_equal(0, Geos::Tools.bool_to_int(false))
31
29
  assert_equal(0, Geos::Tools.bool_to_int(nil))
@@ -92,4 +90,3 @@ class ToolsTests < Minitest::Test
92
90
  assert_equal(:round, Geos::Tools.symbol_for_enum(Geos::BufferCapStyles, 1))
93
91
  end
94
92
  end
95
-
data/test/utils_tests.rb CHANGED
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
- $: << File.dirname(__FILE__)
5
3
  require 'test_helper'
6
4
 
7
5
  class UtilsTests < Minitest::Test
@@ -15,17 +13,17 @@ class UtilsTests < Minitest::Test
15
13
  def test_orientation_index
16
14
  skip unless ENV['FORCE_TESTS'] || (defined?(Geos::Utils) && Geos::Utils.respond_to?(:orientation_index))
17
15
 
18
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 5, 0))
19
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 10, 0))
20
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 0, 0))
21
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, -5, 0))
22
- assert_equal(0, Geos::Utils.orientation_index(0, 0, 10, 0, 20, 0))
23
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 6))
24
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 20))
25
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, 3))
26
- assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 5, -2))
27
- assert_equal(1, Geos::Utils.orientation_index(0, 0, 10, 10, 1000000, 1000001))
28
- 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, 1_000_000, 1_000_001))
26
+ assert_equal(-1, Geos::Utils.orientation_index(0, 0, 10, 10, 1_000_000, 999_999))
29
27
  end
30
28
 
31
29
  def test_relate_match
@@ -50,7 +48,7 @@ class UtilsTests < Minitest::Test
50
48
  end
51
49
 
52
50
  def test_create_point
53
- cs = Geos::CoordinateSequence.new([[ 10, 20 ]])
51
+ cs = Geos::CoordinateSequence.new([[10, 20]])
54
52
  create_method_tester('POINT (10 20)', :create_point, cs, Geos::GEOS_POINT, Geos::Point)
55
53
  end
56
54
 
@@ -59,7 +57,7 @@ class UtilsTests < Minitest::Test
59
57
  end
60
58
 
61
59
  def test_create_point_with_x_y_and_z_arguments
62
- 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))
63
61
  end
64
62
 
65
63
  def test_create_point_with_too_many_arguments
@@ -77,8 +75,8 @@ class UtilsTests < Minitest::Test
77
75
 
78
76
  def test_create_line_string
79
77
  cs = Geos::CoordinateSequence.new([
80
- [ 10, 20, 30 ],
81
- [ 30, 20, 10 ]
78
+ [10, 20, 30],
79
+ [30, 20, 10]
82
80
  ])
83
81
 
84
82
  writer.output_dimensions = 3
@@ -105,7 +103,7 @@ class UtilsTests < Minitest::Test
105
103
  create_method_tester(
106
104
  'LINESTRING Z (10 20 30, 30 20 10)',
107
105
  :create_line_string,
108
- [[ 10, 20, 30 ], [ 30, 20, 10 ]],
106
+ [[10, 20, 30], [30, 20, 10]],
109
107
  Geos::GEOS_LINESTRING,
110
108
  Geos::LineString
111
109
  ) do |geom|
@@ -121,16 +119,16 @@ class UtilsTests < Minitest::Test
121
119
  def test_create_bad_line_string
122
120
  cs = Geos::CoordinateSequence.new(1, 0)
123
121
  assert_raises(ArgumentError) do
124
- Geos::create_line_string(cs)
122
+ Geos.create_line_string(cs)
125
123
  end
126
124
  end
127
125
 
128
126
  def test_create_linear_ring
129
127
  cs = Geos::CoordinateSequence.new([
130
- [ 7, 8, 9 ],
131
- [ 3, 3, 3 ],
132
- [ 11, 15.2, 2 ],
133
- [ 7, 8, 9 ]
128
+ [7, 8, 9],
129
+ [3, 3, 3],
130
+ [11, 15.2, 2],
131
+ [7, 8, 9]
134
132
  ])
135
133
 
136
134
  writer.output_dimensions = 3
@@ -157,7 +155,7 @@ class UtilsTests < Minitest::Test
157
155
  create_method_tester(
158
156
  'LINEARRING Z (7 8 9, 3 3 3, 11 15.2 2, 7 8 9)',
159
157
  :create_linear_ring,
160
- [[ 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]],
161
159
  Geos::GEOS_LINEARRING,
162
160
  Geos::LinearRing
163
161
  ) do |geom|
@@ -174,22 +172,22 @@ class UtilsTests < Minitest::Test
174
172
  cs = Geos::CoordinateSequence.new(1, 0)
175
173
 
176
174
  assert_raises(ArgumentError) do
177
- Geos::create_linear_ring(cs)
175
+ Geos.create_linear_ring(cs)
178
176
  end
179
177
  end
180
178
 
181
179
  def test_create_polygon
182
180
  cs = Geos::CoordinateSequence.new([
183
- [ 0, 0 ],
184
- [ 0, 10 ],
185
- [ 10, 10 ],
186
- [ 10, 0 ],
187
- [ 0, 0 ]
181
+ [0, 0],
182
+ [0, 10],
183
+ [10, 10],
184
+ [10, 0],
185
+ [0, 0]
188
186
  ])
189
187
 
190
- exterior_ring = Geos::create_linear_ring(cs)
188
+ exterior_ring = Geos.create_linear_ring(cs)
191
189
 
192
- geom = Geos::create_polygon(exterior_ring)
190
+ geom = Geos.create_polygon(exterior_ring)
193
191
  assert_instance_of(Geos::Polygon, geom)
194
192
  assert_equal('Polygon', geom.geom_type)
195
193
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -198,22 +196,22 @@ class UtilsTests < Minitest::Test
198
196
 
199
197
  def test_create_polygon_with_coordinate_sequences
200
198
  outer = Geos::CoordinateSequence.new(
201
- [ 0, 0 ],
202
- [ 0, 10 ],
203
- [ 10, 10 ],
204
- [ 10, 0 ],
205
- [ 0, 0 ]
199
+ [0, 0],
200
+ [0, 10],
201
+ [10, 10],
202
+ [10, 0],
203
+ [0, 0]
206
204
  )
207
205
 
208
206
  inner = Geos::CoordinateSequence.new(
209
- [ 2, 2 ],
210
- [ 2, 4 ],
211
- [ 4, 4 ],
212
- [ 4, 2 ],
213
- [ 2, 2 ]
207
+ [2, 2],
208
+ [2, 4],
209
+ [4, 4],
210
+ [4, 2],
211
+ [2, 2]
214
212
  )
215
213
 
216
- geom = Geos::create_polygon(outer, inner)
214
+ geom = Geos.create_polygon(outer, inner)
217
215
  assert_instance_of(Geos::Polygon, geom)
218
216
  assert_equal('Polygon', geom.geom_type)
219
217
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -222,30 +220,30 @@ class UtilsTests < Minitest::Test
222
220
 
223
221
  def test_create_polygon_with_holes
224
222
  exterior_ring = Geos::CoordinateSequence.new(
225
- [ 0, 0 ],
226
- [ 0, 10 ],
227
- [ 10, 10 ],
228
- [ 10, 0 ],
229
- [ 0, 0 ]
223
+ [0, 0],
224
+ [0, 10],
225
+ [10, 10],
226
+ [10, 0],
227
+ [0, 0]
230
228
  )
231
229
 
232
230
  hole_1 = Geos::CoordinateSequence.new(
233
- [ 2, 2 ],
234
- [ 2, 4 ],
235
- [ 4, 4 ],
236
- [ 4, 2 ],
237
- [ 2, 2 ]
231
+ [2, 2],
232
+ [2, 4],
233
+ [4, 4],
234
+ [4, 2],
235
+ [2, 2]
238
236
  )
239
237
 
240
238
  hole_2 = Geos::CoordinateSequence.new(
241
- [ 6, 6 ],
242
- [ 6, 8 ],
243
- [ 8, 8 ],
244
- [ 8, 6 ],
245
- [ 6, 6 ]
239
+ [6, 6],
240
+ [6, 8],
241
+ [8, 8],
242
+ [8, 6],
243
+ [6, 6]
246
244
  )
247
245
 
248
- geom = Geos::create_polygon(exterior_ring, [ hole_1, hole_2 ])
246
+ geom = Geos.create_polygon(exterior_ring, [hole_1, hole_2])
249
247
  assert_instance_of(Geos::Polygon, geom)
250
248
  assert_equal('Polygon', geom.geom_type)
251
249
  assert_equal(Geos::GEOS_POLYGON, geom.type_id)
@@ -263,10 +261,13 @@ class UtilsTests < Minitest::Test
263
261
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_point)
264
262
 
265
263
  assert_equal('MULTIPOINT EMPTY', write(Geos.create_multi_point))
266
- assert_equal('MULTIPOINT (0 0, 10 10)', write(Geos.create_multi_point(
267
- read('POINT(0 0)'),
268
- read('POINT(10 10)')
269
- )))
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
+ ))
270
271
  end
271
272
 
272
273
  def test_create_bad_multi_point
@@ -284,10 +285,13 @@ class UtilsTests < Minitest::Test
284
285
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_line_string)
285
286
 
286
287
  assert_equal('MULTILINESTRING EMPTY', write(Geos.create_multi_line_string))
287
- assert_equal('MULTILINESTRING ((0 0, 10 10), (10 10, 20 20))', write(Geos.create_multi_line_string(
288
- read('LINESTRING(0 0, 10 10)'),
289
- read('LINESTRING(10 10, 20 20)')
290
- )))
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
+ ))
291
295
  end
292
296
 
293
297
  def test_create_bad_multi_line_string
@@ -305,10 +309,13 @@ class UtilsTests < Minitest::Test
305
309
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_polygon)
306
310
 
307
311
  assert_equal('MULTIPOLYGON EMPTY', write(Geos.create_multi_polygon))
308
- 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(
309
- read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
310
- read('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')
311
- )))
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
+ ))
312
319
  end
313
320
 
314
321
  def test_create_bad_multi_polygon
@@ -327,11 +334,12 @@ class UtilsTests < Minitest::Test
327
334
 
328
335
  assert_equal('GEOMETRYCOLLECTION EMPTY', write(Geos.create_geometry_collection))
329
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)))',
330
- write(Geos.create_geometry_collection(
331
- read('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'),
332
- 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
+ )
333
342
  ))
334
- )
335
343
  end
336
344
 
337
345
  def test_create_geometry_collection_with_constants_and_symbols
@@ -356,7 +364,7 @@ class UtilsTests < Minitest::Test
356
364
  def test_create_geometry_collection_with_options
357
365
  skip unless ENV['FORCE_TESTS'] || Geos.respond_to?(:create_geometry_collection)
358
366
 
359
- geom = Geos.create_collection(:multi_line_string, :srid => 4326)
367
+ geom = Geos.create_collection(:multi_line_string, srid: 4326)
360
368
 
361
369
  assert_kind_of(Geos::MultiLineString, geom)
362
370
  assert_equal(4326, geom.srid)
@@ -441,6 +449,7 @@ class UtilsTests < Minitest::Test
441
449
  [5, 5],
442
450
  [0, 5]
443
451
  ])
452
+
444
453
  Geos.create_linear_ring(cs)
445
454
  GC.start
446
455
  end