rgeo 0.5.3 → 0.6.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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/ext/geos_c_impl/extconf.rb +1 -0
  3. data/ext/geos_c_impl/factory.c +10 -1
  4. data/ext/geos_c_impl/geometry.c +25 -3
  5. data/ext/geos_c_impl/line_string.c +1 -12
  6. data/ext/geos_c_impl/polygon.c +0 -3
  7. data/ext/geos_c_impl/preface.h +3 -0
  8. data/lib/rgeo.rb +0 -1
  9. data/lib/rgeo/feature/geometry.rb +17 -0
  10. data/lib/rgeo/feature/types.rb +4 -4
  11. data/lib/rgeo/geographic/projected_feature_methods.rb +1 -22
  12. data/lib/rgeo/geos/ffi_feature_methods.rb +5 -0
  13. data/lib/rgeo/geos/utils.rb +2 -0
  14. data/lib/rgeo/impl_helper/basic_line_string_methods.rb +1 -0
  15. data/lib/rgeo/version.rb +1 -1
  16. metadata +11 -171
  17. data/lib/rgeo/yaml.rb +0 -23
  18. data/test/cartesian_analysis_test.rb +0 -65
  19. data/test/cartesian_bbox_test.rb +0 -123
  20. data/test/common/factory_tests.rb +0 -78
  21. data/test/common/geometry_collection_tests.rb +0 -237
  22. data/test/common/line_string_tests.rb +0 -330
  23. data/test/common/multi_line_string_tests.rb +0 -182
  24. data/test/common/multi_point_tests.rb +0 -200
  25. data/test/common/multi_polygon_tests.rb +0 -191
  26. data/test/common/point_tests.rb +0 -370
  27. data/test/common/polygon_tests.rb +0 -228
  28. data/test/coord_sys/ogc_cs_test.rb +0 -342
  29. data/test/coord_sys/proj4_srs_data_test.rb +0 -41
  30. data/test/coord_sys/proj4_test.rb +0 -150
  31. data/test/coord_sys/sr_org_test.rb +0 -32
  32. data/test/coord_sys/url_reader_test.rb +0 -42
  33. data/test/geos_capi/factory_test.rb +0 -31
  34. data/test/geos_capi/geometry_collection_test.rb +0 -24
  35. data/test/geos_capi/line_string_test.rb +0 -24
  36. data/test/geos_capi/misc_test.rb +0 -116
  37. data/test/geos_capi/multi_line_string_test.rb +0 -24
  38. data/test/geos_capi/multi_point_test.rb +0 -24
  39. data/test/geos_capi/multi_polygon_test.rb +0 -39
  40. data/test/geos_capi/parsing_unparsing_test.rb +0 -40
  41. data/test/geos_capi/point_test.rb +0 -72
  42. data/test/geos_capi/polygon_test.rb +0 -154
  43. data/test/geos_capi/zmfactory_test.rb +0 -57
  44. data/test/geos_ffi/factory_test.rb +0 -31
  45. data/test/geos_ffi/geometry_collection_test.rb +0 -24
  46. data/test/geos_ffi/line_string_test.rb +0 -24
  47. data/test/geos_ffi/misc_test.rb +0 -63
  48. data/test/geos_ffi/multi_line_string_test.rb +0 -24
  49. data/test/geos_ffi/multi_point_test.rb +0 -24
  50. data/test/geos_ffi/multi_polygon_test.rb +0 -33
  51. data/test/geos_ffi/parsing_unparsing_test.rb +0 -41
  52. data/test/geos_ffi/point_test.rb +0 -77
  53. data/test/geos_ffi/polygon_test.rb +0 -46
  54. data/test/geos_ffi/zmfactory_test.rb +0 -58
  55. data/test/mixins_test.rb +0 -141
  56. data/test/oneoff_test.rb +0 -26
  57. data/test/projected_geographic/factory_test.rb +0 -25
  58. data/test/projected_geographic/geometry_collection_test.rb +0 -24
  59. data/test/projected_geographic/line_string_test.rb +0 -24
  60. data/test/projected_geographic/multi_line_string_test.rb +0 -26
  61. data/test/projected_geographic/multi_point_test.rb +0 -30
  62. data/test/projected_geographic/multi_polygon_test.rb +0 -25
  63. data/test/projected_geographic/point_test.rb +0 -51
  64. data/test/projected_geographic/polygon_test.rb +0 -24
  65. data/test/simple_cartesian/calculations_test.rb +0 -99
  66. data/test/simple_cartesian/factory_test.rb +0 -27
  67. data/test/simple_cartesian/geometry_collection_test.rb +0 -30
  68. data/test/simple_cartesian/line_string_test.rb +0 -31
  69. data/test/simple_cartesian/multi_line_string_test.rb +0 -28
  70. data/test/simple_cartesian/multi_point_test.rb +0 -31
  71. data/test/simple_cartesian/multi_polygon_test.rb +0 -31
  72. data/test/simple_cartesian/point_test.rb +0 -50
  73. data/test/simple_cartesian/polygon_test.rb +0 -28
  74. data/test/simple_mercator/factory_test.rb +0 -25
  75. data/test/simple_mercator/geometry_collection_test.rb +0 -24
  76. data/test/simple_mercator/line_string_test.rb +0 -24
  77. data/test/simple_mercator/multi_line_string_test.rb +0 -26
  78. data/test/simple_mercator/multi_point_test.rb +0 -29
  79. data/test/simple_mercator/multi_polygon_test.rb +0 -25
  80. data/test/simple_mercator/point_test.rb +0 -55
  81. data/test/simple_mercator/polygon_test.rb +0 -24
  82. data/test/simple_mercator/window_test.rb +0 -173
  83. data/test/spherical_geographic/calculations_test.rb +0 -167
  84. data/test/spherical_geographic/factory_test.rb +0 -27
  85. data/test/spherical_geographic/geometry_collection_test.rb +0 -31
  86. data/test/spherical_geographic/line_string_test.rb +0 -31
  87. data/test/spherical_geographic/multi_line_string_test.rb +0 -29
  88. data/test/spherical_geographic/multi_point_test.rb +0 -31
  89. data/test/spherical_geographic/multi_polygon_test.rb +0 -31
  90. data/test/spherical_geographic/point_test.rb +0 -78
  91. data/test/spherical_geographic/polygon_test.rb +0 -28
  92. data/test/types_test.rb +0 -42
  93. data/test/wkrep/wkb_generator_test.rb +0 -185
  94. data/test/wkrep/wkb_parser_test.rb +0 -293
  95. data/test/wkrep/wkt_generator_test.rb +0 -294
  96. data/test/wkrep/wkt_parser_test.rb +0 -412
@@ -1,41 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for OGC CS classes
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module CoordSys # :nodoc:
13
- class TestProj4SRSData < ::Test::Unit::TestCase # :nodoc:
14
- def test_epsg_4326
15
- db_ = ::RGeo::CoordSys::SRSDatabase::Proj4Data.new("epsg")
16
- entry_ = db_.get(4326)
17
- allowed_vals_ = [
18
- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", # Proj 4.7
19
- "+proj=longlat +datum=WGS84 +no_defs" # Proj 4.8
20
- ]
21
- assert(allowed_vals_.include?(entry_.proj4.original_str))
22
- assert_equal("WGS 84", entry_.name)
23
- end
24
-
25
- def test_epsg_3857
26
- db_ = ::RGeo::CoordSys::SRSDatabase::Proj4Data.new("epsg")
27
- entry_ = db_.get(3857)
28
- assert_equal("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs", entry_.proj4.original_str)
29
- assert_equal("WGS 84 / Pseudo-Mercator", entry_.name)
30
- end
31
-
32
- def test_nad83_4601
33
- db_ = ::RGeo::CoordSys::SRSDatabase::Proj4Data.new("nad83")
34
- entry_ = db_.get(4601)
35
- assert_equal("+proj=lcc +datum=NAD83 +lon_0=-120d50 +lat_1=48d44 +lat_2=47d30 +lat_0=47 +x_0=500000 +y_0=0 +no_defs", entry_.proj4.original_str)
36
- assert_equal("4601: washington north: nad83", entry_.name)
37
- end
38
- end
39
- end
40
- end
41
- end if ::RGeo::CoordSys::Proj4.supported?
@@ -1,150 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for proj4 wrapper
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module CoordSys # :nodoc:
13
- class TestProj4 < ::Test::Unit::TestCase # :nodoc:
14
- def test_proj4_version
15
- assert_match(/^\d+\.\d+(\.\d+)?$/, ::RGeo::CoordSys::Proj4.version)
16
- end
17
-
18
- def test_create_wgs84
19
- proj_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
20
- assert_equal(true, proj_.geographic?)
21
- assert_equal("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", proj_.original_str)
22
- assert_equal(" +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0", proj_.canonical_str)
23
- end
24
-
25
- def test_get_wgs84_geographic
26
- proj_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
27
- proj2_ = proj_.get_geographic
28
- assert_nil(proj2_.original_str)
29
- assert_equal(true, proj2_.geographic?)
30
- coords_ = ::RGeo::CoordSys::Proj4.transform_coords(proj_, proj2_, 1, 2, 0)
31
- assert_equal([1, 2, 0], coords_)
32
- end
33
-
34
- def test_identity_transform
35
- proj_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
36
- assert_equal([1, 2, 0], ::RGeo::CoordSys::Proj4.transform_coords(proj_, proj_, 1, 2, 0))
37
- assert_equal([1, 2], ::RGeo::CoordSys::Proj4.transform_coords(proj_, proj_, 1, 2, nil))
38
- end
39
-
40
- def _project_merc(x_, y_)
41
- [x_ * 6_378_137.0, ::Math.log(::Math.tan(::Math::PI / 4.0 + y_ / 2.0)) * 6_378_137.0]
42
- end
43
-
44
- def _unproject_merc(x_, y_)
45
- [x_ / 6_378_137.0, (2.0 * ::Math.atan(::Math.exp(y_ / 6_378_137.0)) - ::Math::PI / 2.0)]
46
- end
47
-
48
- def _assert_close_enough(a_, b_)
49
- delta_ = ::Math.sqrt(a_ * a_ + b_ * b_) * 0.00000001
50
- delta_ = 0.000000000001 if delta_ < 0.000000000001
51
- assert_in_delta(a_, b_, delta_)
52
- end
53
-
54
- def _assert_xy_close(xy1_, xy2_)
55
- _assert_close_enough(xy1_[0], xy2_[0])
56
- _assert_close_enough(xy1_[1], xy2_[1])
57
- end
58
-
59
- def test_simple_mercator_transform
60
- geography_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", radians: true)
61
- projection_ = ::RGeo::CoordSys::Proj4.create("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs")
62
- _assert_xy_close(_project_merc(0, 0), ::RGeo::CoordSys::Proj4.transform_coords(geography_, projection_, 0, 0, nil))
63
- _assert_xy_close(_project_merc(0.01, 0.01), ::RGeo::CoordSys::Proj4.transform_coords(geography_, projection_, 0.01, 0.01, nil))
64
- _assert_xy_close(_project_merc(1, 1), ::RGeo::CoordSys::Proj4.transform_coords(geography_, projection_, 1, 1, nil))
65
- _assert_xy_close(_project_merc(-1, -1), ::RGeo::CoordSys::Proj4.transform_coords(geography_, projection_, -1, -1, nil))
66
- _assert_xy_close(_unproject_merc(0, 0), ::RGeo::CoordSys::Proj4.transform_coords(projection_, geography_, 0, 0, nil))
67
- _assert_xy_close(_unproject_merc(10_000, 10_000), ::RGeo::CoordSys::Proj4.transform_coords(projection_, geography_, 10_000, 10_000, nil))
68
- _assert_xy_close(_unproject_merc(-20_000_000, -20_000_000), ::RGeo::CoordSys::Proj4.transform_coords(projection_, geography_, -20_000_000, -20_000_000, nil))
69
- end
70
-
71
- def test_equivalence
72
- proj1_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
73
- proj2_ = ::RGeo::CoordSys::Proj4.create(" +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
74
- assert_equal(proj1_, proj2_)
75
- end
76
-
77
- def test_hashes_equal_for_equivalent_objects
78
- proj1_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
79
- proj2_ = ::RGeo::CoordSys::Proj4.create(" +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
80
- assert_equal(proj1_.hash, proj2_.hash)
81
- end
82
-
83
- def test_point_projection_cast
84
- geography_ = ::RGeo::Geos.factory(proj4: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", srid: 4326)
85
- projection_ = ::RGeo::Geos.factory(proj4: "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs", srid: 27_700)
86
- proj_point_ = projection_.parse_wkt("POINT(473600.5000000000000000 186659.7999999999883585)")
87
- geo_point_ = ::RGeo::Feature.cast(proj_point_, project: true, factory: geography_)
88
- _assert_close_enough(-0.9393598527244420, geo_point_.x)
89
- _assert_close_enough(51.5740106527552697, geo_point_.y)
90
- end
91
-
92
- def test_point_transform_lowlevel
93
- geography_ = ::RGeo::Geos.factory(proj4: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", srid: 4326)
94
- projection_ = ::RGeo::Geos.factory(proj4: "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs", srid: 27_700)
95
- proj_point_ = projection_.parse_wkt("POINT(473600.5000000000000000 186659.7999999999883585)")
96
- geo_point_ = ::RGeo::CoordSys::Proj4.transform(projection_.proj4, proj_point_, geography_.proj4, geography_)
97
- _assert_close_enough(-0.9393598527244420, geo_point_.x)
98
- _assert_close_enough(51.5740106527552697, geo_point_.y)
99
- end
100
-
101
- def test_geocentric
102
- obj1_ = ::RGeo::CoordSys::Proj4.create("+proj=geocent +ellps=WGS84")
103
- assert_equal(true, obj1_.geocentric?)
104
- end
105
-
106
- def test_get_geographic
107
- projection_ = ::RGeo::CoordSys::Proj4.create("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs")
108
- geographic_ = projection_.get_geographic
109
- expected_ = ::RGeo::CoordSys::Proj4.create("+proj=latlong +a=6378137 +b=6378137 +nadgrids=@null")
110
- assert_equal(expected_, geographic_)
111
- end
112
-
113
- def test_marshal_roundtrip
114
- obj1_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
115
- dump_ = ::Marshal.dump(obj1_)
116
- obj2_ = ::Marshal.load(dump_)
117
- assert_equal(obj1_, obj2_)
118
- end
119
-
120
- def test_dup
121
- obj1_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
122
- obj2_ = obj1_.dup
123
- assert_equal(obj1_, obj2_)
124
- end
125
-
126
- def test_dup_of_get_geographic
127
- obj1_ = ::RGeo::CoordSys::Proj4.create("+proj=latlong +datum=WGS84 +ellps=WGS84")
128
- obj2_ = obj1_.get_geographic
129
- obj3_ = obj2_.dup
130
- assert_equal(obj1_, obj3_)
131
- end
132
-
133
- if ::RGeo.yaml_supported?
134
-
135
- def test_yaml_roundtrip
136
- obj1_ = ::RGeo::CoordSys::Proj4.create("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
137
- dump_ = ::Psych.dump(obj1_)
138
- obj2_ = ::Psych.load(dump_)
139
- assert_equal(obj1_, obj2_)
140
- end
141
-
142
- end
143
- end
144
- end
145
- end
146
- end if ::RGeo::CoordSys::Proj4.supported?
147
-
148
- unless ::RGeo::CoordSys::Proj4.supported?
149
- puts "WARNING: Proj4 support not available. Related tests skipped."
150
- end
@@ -1,32 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for OGC CS classes
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module CoordSys # :nodoc:
13
- class TestSrOrg < ::Test::Unit::TestCase # :nodoc:
14
- def test_epsg_4326
15
- db_ = ::RGeo::CoordSys::SRSDatabase::SrOrg.new("epsg")
16
- entry_ = db_.get(4326)
17
- assert_equal("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", entry_.proj4.original_str)
18
- assert_kind_of(::RGeo::CoordSys::CS::GeographicCoordinateSystem, entry_.coord_sys)
19
- assert_equal("WGS 84", entry_.name)
20
- end
21
-
22
- def test_epsg_3857
23
- db_ = ::RGeo::CoordSys::SRSDatabase::SrOrg.new("epsg")
24
- entry_ = db_.get(3857)
25
- assert_equal("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", entry_.proj4.original_str)
26
- assert_kind_of(::RGeo::CoordSys::CS::ProjectedCoordinateSystem, entry_.coord_sys)
27
- assert_equal("Popular Visualisation CRS / Mercator", entry_.name)
28
- end
29
- end if false
30
- end
31
- end
32
- end
@@ -1,42 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for OGC CS classes
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module CoordSys # :nodoc:
13
- class TestUrlReader < ::Test::Unit::TestCase # :nodoc:
14
- def test_sr_org_epsg_4326_ogcwkt
15
- db_ = ::RGeo::CoordSys::SRSDatabase::UrlReader.new
16
- entry_ = db_.get("http://spatialreference.org/ref/epsg/4326/ogcwkt/")
17
- assert_kind_of(::RGeo::CoordSys::CS::GeographicCoordinateSystem, entry_.coord_sys)
18
- assert_equal("WGS 84", entry_.name)
19
- end
20
-
21
- def test_sr_org_epsg_4326_proj4
22
- db_ = ::RGeo::CoordSys::SRSDatabase::UrlReader.new
23
- entry_ = db_.get("http://spatialreference.org/ref/epsg/4326/proj4/")
24
- assert_equal("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", entry_.proj4.original_str)
25
- end
26
-
27
- def test_sr_org_epsg_3857_ogcwkt
28
- db_ = ::RGeo::CoordSys::SRSDatabase::UrlReader.new
29
- entry_ = db_.get("http://spatialreference.org/ref/epsg/3857/ogcwkt/")
30
- assert_kind_of(::RGeo::CoordSys::CS::ProjectedCoordinateSystem, entry_.coord_sys)
31
- assert_equal("Popular Visualisation CRS / Mercator", entry_.name)
32
- end
33
-
34
- def test_sr_org_epsg_3857_proj4
35
- db_ = ::RGeo::CoordSys::SRSDatabase::UrlReader.new
36
- entry_ = db_.get("http://spatialreference.org/ref/epsg/3857/proj4/")
37
- assert_equal("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", entry_.proj4.original_str)
38
- end
39
- end if false
40
- end
41
- end
42
- end
@@ -1,31 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the GEOS factory
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/factory_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module GeosCAPI # :nodoc:
15
- class TestFactory < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Geos.factory(srid: 1000)
18
- @srid = 1000
19
- end
20
-
21
- include ::RGeo::Tests::Common::FactoryTests
22
-
23
- def test_is_geos_factory
24
- assert_equal(true, ::RGeo::Geos.is_geos?(@factory))
25
- assert_equal(true, ::RGeo::Geos.is_capi_geos?(@factory))
26
- assert_equal(false, ::RGeo::Geos.is_ffi_geos?(@factory))
27
- end
28
- end
29
- end
30
- end
31
- end if ::RGeo::Geos.capi_supported?
@@ -1,24 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the GEOS geometry collection implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/geometry_collection_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module GeosCAPI # :nodoc:
15
- class TestGeometryCollection < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory
17
- ::RGeo::Geos.factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::GeometryCollectionTests
21
- end
22
- end
23
- end
24
- end if ::RGeo::Geos.capi_supported?
@@ -1,24 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the GEOS line string implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/line_string_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module GeosCAPI # :nodoc:
15
- class TestLineString < ::Test::Unit::TestCase # :nodoc:
16
- include ::RGeo::Tests::Common::LineStringTests
17
-
18
- def setup
19
- @factory = ::RGeo::Geos.factory
20
- end
21
- end
22
- end
23
- end
24
- end if ::RGeo::Geos.capi_supported?
@@ -1,116 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for miscellaneous GEOS stuff
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module GeosCAPI # :nodoc:
13
- class TestMisc < ::Test::Unit::TestCase # :nodoc:
14
- def setup
15
- @factory = ::RGeo::Geos.factory(srid: 4326)
16
- end
17
-
18
- def test_marshal_dump_with_geos
19
- @factory = ::RGeo::Geos.factory(
20
- srid: 4326,
21
- wkt_generator: :geos,
22
- wkb_generator: :geos,
23
- wkt_parser: :geos,
24
- wkb_parser: :geos
25
- )
26
-
27
- dump = nil
28
- assert_nothing_raised { dump = @factory.marshal_dump }
29
- assert_equal({}, dump["wktg"])
30
- assert_equal({}, dump["wkbg"])
31
- assert_equal({}, dump["wktp"])
32
- assert_equal({}, dump["wkbp"])
33
- end
34
-
35
- def test_encode_with_geos
36
- @factory = ::RGeo::Geos.factory(
37
- srid: 4326,
38
- wkt_generator: :geos,
39
- wkb_generator: :geos,
40
- wkt_parser: :geos,
41
- wkb_parser: :geos
42
- )
43
- coder = Psych::Coder.new("test")
44
-
45
- assert_nothing_raised { @factory.encode_with(coder) }
46
- assert_equal({}, coder["wkt_generator"])
47
- assert_equal({}, coder["wkb_generator"])
48
- assert_equal({}, coder["wkt_parser"])
49
- assert_equal({}, coder["wkb_parser"])
50
- end
51
-
52
- def test_uninitialized
53
- geom_ = ::RGeo::Geos::CAPIGeometryImpl.new
54
- assert_equal(false, geom_.initialized?)
55
- assert_nil(geom_.geometry_type)
56
- end
57
-
58
- def test_empty_geometries_equal
59
- geom1_ = @factory.collection([])
60
- geom2_ = @factory.line_string([])
61
- assert(!geom1_.eql?(geom2_))
62
- assert(geom1_.equals?(geom2_))
63
- end
64
-
65
- def test_prepare
66
- p1_ = @factory.point(1, 2)
67
- p2_ = @factory.point(3, 4)
68
- p3_ = @factory.point(5, 2)
69
- polygon_ = @factory.polygon(@factory.linear_ring([p1_, p2_, p3_, p1_]))
70
- assert_equal(false, polygon_.prepared?)
71
- polygon_.prepare!
72
- assert_equal(true, polygon_.prepared?)
73
- end
74
-
75
- def test_auto_prepare
76
- p1_ = @factory.point(1, 2)
77
- p2_ = @factory.point(3, 4)
78
- p3_ = @factory.point(5, 2)
79
- polygon_ = @factory.polygon(@factory.linear_ring([p1_, p2_, p3_, p1_]))
80
- assert_equal(false, polygon_.prepared?)
81
- polygon_.intersects?(p1_)
82
- assert_equal(false, polygon_.prepared?)
83
- polygon_.intersects?(p2_)
84
- assert_equal(true, polygon_.prepared?)
85
-
86
- factory_no_auto_prepare_ = ::RGeo::Geos.factory(srid: 4326, auto_prepare: :disabled)
87
- polygon2_ = factory_no_auto_prepare_.polygon(
88
- factory_no_auto_prepare_.linear_ring([p1_, p2_, p3_, p1_]))
89
- assert_equal(false, polygon2_.prepared?)
90
- polygon2_.intersects?(p1_)
91
- assert_equal(false, polygon2_.prepared?)
92
- polygon2_.intersects?(p2_)
93
- assert_equal(false, polygon2_.prepared?)
94
- end
95
-
96
- def test_gh_21
97
- # Test for GH-21 (seg fault in rgeo_convert_to_geos_geometry)
98
- # This seemed to fail under Ruby 1.8.7 only.
99
- f_ = RGeo::Geographic.simple_mercator_factory
100
- loc_ = f_.line_string([f_.point(-123, 37), f_.point(-122, 38)])
101
- f2_ = f_.projection_factory
102
- loc2_ = f2_.line_string([f2_.point(-123, 37), f2_.point(-122, 38)])
103
- loc2_.intersection(loc_)
104
- end
105
-
106
- def test_geos_version
107
- assert_match(/^\d+\.\d+(\.\d+)?$/, ::RGeo::Geos.version)
108
- end
109
- end
110
- end
111
- end
112
- end if ::RGeo::Geos.capi_supported?
113
-
114
- unless ::RGeo::Geos.capi_supported?
115
- puts "WARNING: GEOS CAPI support not available. Related tests skipped."
116
- end