ffi-geos 0.0.1.beta1 → 0.0.1.beta2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +7 -5
- data/VERSION +1 -1
- data/ffi-geos.gemspec +85 -0
- data/lib/buffer_params.rb +81 -0
- data/lib/ffi-geos.rb +273 -20
- data/lib/geometry.rb +22 -51
- data/lib/line_string.rb +5 -11
- data/lib/prepared_geometry.rb +30 -0
- data/lib/tools.rb +8 -0
- data/lib/utils.rb +22 -14
- data/test/geometry_tests.rb +125 -105
- data/test/prepared_geometry_tests.rb +56 -10
- data/test/utils_tests.rb +16 -11
- metadata +6 -4
@@ -6,23 +6,69 @@ if defined?(Geos::PreparedGeometry)
|
|
6
6
|
class PreparedGeometryTests < Test::Unit::TestCase
|
7
7
|
include TestHelper
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
POINT_A = 'POINT(0 0)'
|
10
|
+
POINT_B = 'POINT(5 0)'
|
11
|
+
POINT_C = 'POINT(15 15)'
|
12
|
+
LINESTRING_A = 'LINESTRING(0 0, 10 0)'
|
13
|
+
LINESTRING_B = 'LINESTRING(5 -5, 5 5)'
|
14
|
+
LINESTRING_C = 'LINESTRING(5 0, 15 0)'
|
15
|
+
LINESTRING_D = 'LINESTRING(0 0, 5 0, 10 0)'
|
16
|
+
POLYGON_A = 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'
|
17
|
+
POLYGON_B = 'POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))'
|
12
18
|
|
13
|
-
|
19
|
+
def relationship_tester(method, *expected)
|
20
|
+
[
|
21
|
+
[ POINT_A, POINT_A ],
|
22
|
+
[ POINT_A, LINESTRING_A ],
|
23
|
+
[ POINT_B, LINESTRING_A ],
|
24
|
+
[ LINESTRING_B, LINESTRING_A ],
|
25
|
+
[ LINESTRING_C, LINESTRING_A ],
|
26
|
+
[ LINESTRING_D, LINESTRING_A ],
|
27
|
+
[ POLYGON_A, POLYGON_B ],
|
28
|
+
[ POLYGON_A, POINT_C ],
|
29
|
+
].each_with_index do |(geom_a, geom_b), i|
|
30
|
+
geom_a = read(geom_a).to_prepared
|
31
|
+
geom_b = read(geom_b)
|
14
32
|
|
15
|
-
|
16
|
-
|
33
|
+
value = geom_a.send(method, geom_b)
|
34
|
+
assert_equal(expected[i], value)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_disjoint
|
39
|
+
relationship_tester(:disjoint?, false, false, false, false, false, false, false, true)
|
40
|
+
end
|
17
41
|
|
18
|
-
|
42
|
+
def test_touches
|
43
|
+
relationship_tester(:touches?, false, true, false, false, false, false, false, false)
|
19
44
|
end
|
20
45
|
|
21
46
|
def test_intersects
|
22
|
-
|
23
|
-
|
47
|
+
relationship_tester(:intersects?, true, true, true, true, true, true, true, false)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_crosses
|
51
|
+
relationship_tester(:crosses?, false, false, false, true, false, false, false, false)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_within
|
55
|
+
relationship_tester(:within?, true, false, true, false, false, true, false, false)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_contains
|
59
|
+
relationship_tester(:contains?, true, false, false, false, false, true, false, false)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_overlaps
|
63
|
+
relationship_tester(:overlaps?, false, false, false, false, true, false, true, false)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_covers
|
67
|
+
relationship_tester(:covers?, true, false, false, false, false, true, false, false)
|
68
|
+
end
|
24
69
|
|
25
|
-
|
70
|
+
def test_covered_by
|
71
|
+
relationship_tester(:covered_by?, true, true, true, false, false, true, false, false)
|
26
72
|
end
|
27
73
|
end
|
28
74
|
end
|
data/test/utils_tests.rb
CHANGED
@@ -206,7 +206,7 @@ class UtilsTests < Test::Unit::TestCase
|
|
206
206
|
assert_equal(1, geom.num_geometries)
|
207
207
|
end
|
208
208
|
|
209
|
-
if ENV['FORCE_TESTS'] || Geos.
|
209
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_point)
|
210
210
|
def test_create_multi_point
|
211
211
|
@writer.rounding_precision = 0
|
212
212
|
assert_equal('MULTIPOINT EMPTY', write(Geos.create_multi_point))
|
@@ -226,7 +226,7 @@ class UtilsTests < Test::Unit::TestCase
|
|
226
226
|
end
|
227
227
|
end
|
228
228
|
|
229
|
-
if ENV['FORCE_TESTS'] || Geos.
|
229
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_line_string)
|
230
230
|
def test_create_multi_line_string
|
231
231
|
@writer.rounding_precision = 0
|
232
232
|
assert_equal('MULTILINESTRING EMPTY', write(Geos.create_multi_line_string))
|
@@ -246,7 +246,7 @@ class UtilsTests < Test::Unit::TestCase
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
|
-
if ENV['FORCE_TESTS'] || Geos.
|
249
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_multi_polygon)
|
250
250
|
def test_create_multi_polygon
|
251
251
|
@writer.rounding_precision = 0
|
252
252
|
assert_equal('MULTIPOLYGON EMPTY', write(Geos.create_multi_polygon))
|
@@ -266,7 +266,7 @@ class UtilsTests < Test::Unit::TestCase
|
|
266
266
|
end
|
267
267
|
end
|
268
268
|
|
269
|
-
if ENV['FORCE_TESTS'] || Geos.
|
269
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_geometry_collection)
|
270
270
|
def test_create_geometry_collection
|
271
271
|
@writer.rounding_precision = 0
|
272
272
|
assert_equal('GEOMETRYCOLLECTION EMPTY', write(Geos.create_geometry_collection))
|
@@ -278,6 +278,11 @@ class UtilsTests < Test::Unit::TestCase
|
|
278
278
|
)
|
279
279
|
end
|
280
280
|
|
281
|
+
def test_create_geometry_collection_with_constants_and_symbols
|
282
|
+
assert_kind_of(Geos::MultiLineString, Geos.create_collection(Geos::GeomTypes::GEOS_MULTILINESTRING))
|
283
|
+
assert_kind_of(Geos::MultiLineString, Geos.create_collection(:multi_line_string))
|
284
|
+
end
|
285
|
+
|
281
286
|
def test_create_bad_geometry_collection
|
282
287
|
assert_raise(TypeError) do
|
283
288
|
Geos.create_geometry_collection(
|
@@ -289,43 +294,43 @@ class UtilsTests < Test::Unit::TestCase
|
|
289
294
|
end
|
290
295
|
end
|
291
296
|
|
292
|
-
if ENV['FORCE_TESTS'] || Geos.
|
297
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_point)
|
293
298
|
def test_create_empty_point
|
294
299
|
assert_equal('POINT EMPTY', write(Geos.create_empty_point))
|
295
300
|
end
|
296
301
|
end
|
297
302
|
|
298
|
-
if ENV['FORCE_TESTS'] || Geos.
|
303
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_line_string)
|
299
304
|
def test_create_empty_line_string
|
300
305
|
assert_equal('LINESTRING EMPTY', write(Geos.create_empty_line_string))
|
301
306
|
end
|
302
307
|
end
|
303
308
|
|
304
|
-
if ENV['FORCE_TESTS'] || Geos.
|
309
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_polygon)
|
305
310
|
def test_create_empty_polygon
|
306
311
|
assert_equal('POLYGON EMPTY', write(Geos.create_empty_polygon))
|
307
312
|
end
|
308
313
|
end
|
309
314
|
|
310
|
-
if ENV['FORCE_TESTS'] || Geos.
|
315
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_multi_point)
|
311
316
|
def test_create_empty_multi_point
|
312
317
|
assert_equal('MULTIPOINT EMPTY', write(Geos.create_empty_multi_point))
|
313
318
|
end
|
314
319
|
end
|
315
320
|
|
316
|
-
if ENV['FORCE_TESTS'] || Geos.
|
321
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_multi_line_string)
|
317
322
|
def test_create_empty_multi_line_string
|
318
323
|
assert_equal('MULTILINESTRING EMPTY', write(Geos.create_empty_multi_line_string))
|
319
324
|
end
|
320
325
|
end
|
321
326
|
|
322
|
-
if ENV['FORCE_TESTS'] || Geos.
|
327
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_multi_polygon)
|
323
328
|
def test_create_empty_multi_polygon
|
324
329
|
assert_equal('MULTIPOLYGON EMPTY', write(Geos.create_empty_multi_polygon))
|
325
330
|
end
|
326
331
|
end
|
327
332
|
|
328
|
-
if ENV['FORCE_TESTS'] || Geos.
|
333
|
+
if ENV['FORCE_TESTS'] || Geos.respond_to?(:create_empty_geometry_collection)
|
329
334
|
def test_create_empty_geometry_collection
|
330
335
|
assert_equal('GEOMETRYCOLLECTION EMPTY', write(Geos.create_empty_geometry_collection))
|
331
336
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-geos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 62196399
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- 1
|
10
10
|
- beta
|
11
|
-
-
|
12
|
-
version: 0.0.1.
|
11
|
+
- 2
|
12
|
+
version: 0.0.1.beta2
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- J Smith
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-
|
20
|
+
date: 2011-05-11 00:00:00 Z
|
21
21
|
dependencies: []
|
22
22
|
|
23
23
|
description: An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).
|
@@ -33,6 +33,8 @@ files:
|
|
33
33
|
- README.rdoc
|
34
34
|
- Rakefile
|
35
35
|
- VERSION
|
36
|
+
- ffi-geos.gemspec
|
37
|
+
- lib/buffer_params.rb
|
36
38
|
- lib/coordinate_sequence.rb
|
37
39
|
- lib/ffi-geos.rb
|
38
40
|
- lib/geometry.rb
|