geos-extensions 1.0.0 → 2.0.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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +17 -0
  3. data/MIT-LICENSE +1 -1
  4. data/Rakefile +2 -0
  5. data/lib/geos-extensions.rb +6 -0
  6. data/lib/geos/coordinate_sequence.rb +290 -12
  7. data/lib/geos/extensions/exceptions.rb +2 -0
  8. data/lib/geos/extensions/version.rb +3 -1
  9. data/lib/geos/geometry.rb +3 -1
  10. data/lib/geos/geometry_collection.rb +52 -0
  11. data/lib/geos/geos_helper.rb +2 -0
  12. data/lib/geos/google_maps.rb +2 -0
  13. data/lib/geos/google_maps/api_2.rb +2 -0
  14. data/lib/geos/google_maps/api_3.rb +2 -0
  15. data/lib/geos/google_maps/api_common.rb +2 -0
  16. data/lib/geos/google_maps/polyline_encoder.rb +2 -0
  17. data/lib/geos/line_string.rb +123 -0
  18. data/lib/geos/multi_line_string.rb +2 -0
  19. data/lib/geos/multi_point.rb +2 -0
  20. data/lib/geos/multi_polygon.rb +2 -0
  21. data/lib/geos/point.rb +59 -0
  22. data/lib/geos/polygon.rb +97 -0
  23. data/lib/geos/yaml.rb +1 -0
  24. data/lib/geos/yaml/psych.rb +1 -0
  25. data/lib/geos/yaml/syck.rb +1 -0
  26. data/lib/geos_extensions.rb +2 -0
  27. data/test/coordinate_sequence_tests.rb +256 -0
  28. data/test/geometry_collection_tests.rb +429 -0
  29. data/test/geometry_tests.rb +57 -0
  30. data/test/google_maps_api_2_tests.rb +2 -0
  31. data/test/google_maps_api_3_tests.rb +2 -0
  32. data/test/google_maps_api_common_tests.rb +2 -0
  33. data/test/google_maps_polyline_encoder_tests.rb +2 -0
  34. data/test/helper_tests.rb +2 -0
  35. data/test/line_string_tests.rb +211 -0
  36. data/test/misc_tests.rb +2 -0
  37. data/test/point_tests.rb +173 -0
  38. data/test/polygon_tests.rb +329 -0
  39. data/test/reader_tests.rb +2 -0
  40. data/test/test_helper.rb +73 -3
  41. data/test/writer_tests.rb +2 -0
  42. data/test/yaml_tests.rb +1 -0
  43. metadata +16 -3
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
1
3
 
2
4
  $: << File.dirname(__FILE__)
3
5
  require 'test_helper'
@@ -3,14 +3,16 @@ if RUBY_VERSION >= '1.9'
3
3
  require 'simplecov'
4
4
 
5
5
  SimpleCov.command_name('Unit Tests')
6
+ SimpleCov.merge_timeout(3600)
6
7
  SimpleCov.start do
7
8
  add_filter '/test/'
9
+ add_filter '/.bundle/'
8
10
  end
9
11
  end
10
12
 
11
13
  require 'rubygems'
12
- require 'forwardable'
13
14
  require 'minitest/autorun'
15
+ require 'minitest/reporters' if RUBY_VERSION >= '1.9'
14
16
 
15
17
  if RUBY_VERSION >= '1.9'
16
18
  require 'minitest/reporters'
@@ -98,6 +100,24 @@ module TestHelper
98
100
  BOUNDS_G_LAT_LNG = "((0.1, 0.1), (5.2, 5.2))"
99
101
  BOUNDS_G_LAT_LNG_URL_VALUE = '0.1,0.1,5.2,5.2'
100
102
 
103
+ def self.included(base)
104
+ base.class_eval do
105
+ attr_reader :writer
106
+ end
107
+ end
108
+
109
+ def setup
110
+ @writer = Geos::WktWriter.new
111
+ end
112
+
113
+ def read(*args)
114
+ Geos.read(*args)
115
+ end
116
+
117
+ def write(*args)
118
+ writer.write(*args)
119
+ end
120
+
101
121
  if String.method_defined?(:force_encoding)
102
122
  POINT_WKB_BIN.force_encoding('BINARY')
103
123
  POINT_EWKB_BIN.force_encoding('BINARY')
@@ -123,9 +143,59 @@ module TestHelper
123
143
  [ 0.0, 0.0 ]
124
144
  ], cs.to_a)
125
145
  end
146
+
147
+ def simple_tester(method, expected, geom, *args)
148
+ geom = read(geom)
149
+ result = geom.send(method, *args)
150
+
151
+ if result.is_a?(Geos::Geometry)
152
+ result = write(result)
153
+ end
154
+
155
+ assert_equal(expected, result)
156
+ end
157
+
158
+ def srid_copy_tester(method, expected, expected_srid, srid_policy, wkt, *args)
159
+ geom = read(wkt)
160
+ geom.srid = 4326
161
+ Geos.srid_copy_policy = srid_policy
162
+ geom_b = geom.send(method, *args)
163
+ assert_equal(4326, geom.srid)
164
+ assert_equal(expected_srid, geom_b.srid)
165
+ assert_equal(expected, write(geom_b))
166
+ ensure
167
+ Geos.srid_copy_policy = :default
168
+ end
169
+
170
+ def simple_bang_tester(method, expected, wkt, *args)
171
+ geom = read(wkt)
172
+ result = geom.send(method, *args)
173
+
174
+ assert_equal(wkt, write(geom))
175
+ assert_equal(expected, write(result))
176
+
177
+ geom = read(wkt)
178
+ geom.send("#{method}!", *args)
179
+
180
+ assert_equal(expected, write(geom))
181
+ end
182
+
183
+ def affine_tester(method, expected, wkt, *args)
184
+ writer.trim = true
185
+
186
+ geom = read(wkt)
187
+ geom.send("#{method}!", *args).snap_to_grid!(0.1)
188
+
189
+ assert_equal(expected, write(geom))
190
+
191
+ geom = read(wkt)
192
+ geom2 = geom.send(method, *args).snap_to_grid(0.1)
193
+
194
+ assert_equal(wkt, write(geom))
195
+ assert_equal(expected, write(geom2, :trim => true))
196
+ end
126
197
  end
127
198
 
128
199
  if RUBY_VERSION >= '1.9'
129
- MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
200
+ Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
130
201
  end
131
-
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
1
3
 
2
4
  $: << File.dirname(__FILE__)
3
5
  require 'test_helper'
@@ -1,4 +1,5 @@
1
1
  # encoding: UTF-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  $: << File.dirname(__FILE__)
4
5
  require 'test_helper'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geos-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-01 00:00:00.000000000 Z
11
+ date: 2017-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-geos
@@ -32,6 +32,7 @@ extra_rdoc_files:
32
32
  - README.rdoc
33
33
  files:
34
34
  - ".gitignore"
35
+ - ".travis.yml"
35
36
  - Gemfile
36
37
  - Guardfile
37
38
  - MIT-LICENSE
@@ -60,12 +61,18 @@ files:
60
61
  - lib/geos/yaml/psych.rb
61
62
  - lib/geos/yaml/syck.rb
62
63
  - lib/geos_extensions.rb
64
+ - test/coordinate_sequence_tests.rb
65
+ - test/geometry_collection_tests.rb
66
+ - test/geometry_tests.rb
63
67
  - test/google_maps_api_2_tests.rb
64
68
  - test/google_maps_api_3_tests.rb
65
69
  - test/google_maps_api_common_tests.rb
66
70
  - test/google_maps_polyline_encoder_tests.rb
67
71
  - test/helper_tests.rb
72
+ - test/line_string_tests.rb
68
73
  - test/misc_tests.rb
74
+ - test/point_tests.rb
75
+ - test/polygon_tests.rb
69
76
  - test/reader_tests.rb
70
77
  - test/test_helper.rb
71
78
  - test/writer_tests.rb
@@ -90,17 +97,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
97
  version: '0'
91
98
  requirements: []
92
99
  rubyforge_project:
93
- rubygems_version: 2.5.1
100
+ rubygems_version: 2.6.10
94
101
  signing_key:
95
102
  specification_version: 4
96
103
  summary: Extensions for the GEOS library.
97
104
  test_files:
105
+ - test/coordinate_sequence_tests.rb
106
+ - test/geometry_collection_tests.rb
107
+ - test/geometry_tests.rb
98
108
  - test/google_maps_api_2_tests.rb
99
109
  - test/google_maps_api_3_tests.rb
100
110
  - test/google_maps_api_common_tests.rb
101
111
  - test/google_maps_polyline_encoder_tests.rb
102
112
  - test/helper_tests.rb
113
+ - test/line_string_tests.rb
103
114
  - test/misc_tests.rb
115
+ - test/point_tests.rb
116
+ - test/polygon_tests.rb
104
117
  - test/reader_tests.rb
105
118
  - test/test_helper.rb
106
119
  - test/writer_tests.rb