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
data/test/types_test.rb DELETED
@@ -1,42 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for type properties
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- class TestTypes < ::Test::Unit::TestCase # :nodoc:
13
- def test_geometry
14
- assert_equal("Geometry", ::RGeo::Feature::Geometry.type_name)
15
- assert_nil(::RGeo::Feature::Geometry.supertype)
16
- assert(::RGeo::Feature::Geometry.subtype_of?(::RGeo::Feature::Geometry))
17
- assert(!::RGeo::Feature::Geometry.subtype_of?(::RGeo::Feature::Point))
18
- end
19
-
20
- def test_point
21
- assert_equal("Point", ::RGeo::Feature::Point.type_name)
22
- assert_equal(::RGeo::Feature::Geometry, ::RGeo::Feature::Point.supertype)
23
- assert(::RGeo::Feature::Point.subtype_of?(::RGeo::Feature::Point))
24
- assert(::RGeo::Feature::Point.subtype_of?(::RGeo::Feature::Geometry))
25
- assert(!::RGeo::Feature::Point.subtype_of?(::RGeo::Feature::LineString))
26
- end
27
-
28
- def test_line_string
29
- assert_equal("LineString", ::RGeo::Feature::LineString.type_name)
30
- assert_equal(::RGeo::Feature::Curve, ::RGeo::Feature::LineString.supertype)
31
- assert(::RGeo::Feature::LineString.subtype_of?(::RGeo::Feature::LineString))
32
- assert(::RGeo::Feature::LineString.subtype_of?(::RGeo::Feature::Curve))
33
- assert(::RGeo::Feature::LineString.subtype_of?(::RGeo::Feature::Geometry))
34
- assert(!::RGeo::Feature::LineString.subtype_of?(::RGeo::Feature::Line))
35
- end
36
- end
37
- end
38
- end
39
-
40
- unless ::RGeo.yaml_supported?
41
- puts "WARNING: Psych not installed. Skipping YAML tests."
42
- end
@@ -1,185 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for WKT generator
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module WKRep # :nodoc:
13
- class TestWKBGenerator < ::Test::Unit::TestCase # :nodoc:
14
- def setup
15
- @factory = ::RGeo::Cartesian.preferred_factory(srid: 1000)
16
- @factoryz = ::RGeo::Cartesian.preferred_factory(srid: 1000, has_z_coordinate: true)
17
- @factorym = ::RGeo::Cartesian.preferred_factory(srid: 1000, has_m_coordinate: true)
18
- @factoryzm = ::RGeo::Cartesian.preferred_factory(srid: 1000, has_z_coordinate: true, has_m_coordinate: true)
19
- end
20
-
21
- def test_point_basic_xdr
22
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
23
- obj_ = @factory.point(1, 2)
24
- assert_equal("00000000013ff00000000000004000000000000000", generator_.generate(obj_))
25
- end
26
-
27
- def test_point_basic_ndr
28
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, little_endian: true)
29
- obj_ = @factory.point(1, 2)
30
- assert_equal("0101000000000000000000f03f0000000000000040", generator_.generate(obj_))
31
- end
32
-
33
- def test_point_2d_ewkb
34
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
35
- obj_ = @factory.point(1, 2)
36
- assert_equal("00000000013ff00000000000004000000000000000", generator_.generate(obj_))
37
- end
38
-
39
- def test_point_2d_wkb12
40
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :wkb12)
41
- obj_ = @factory.point(1, 2)
42
- assert_equal("00000000013ff00000000000004000000000000000", generator_.generate(obj_))
43
- end
44
-
45
- def test_point_2d_ewkb_with_srid
46
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb, emit_ewkb_srid: true)
47
- obj_ = @factory.point(1, 2)
48
- assert_equal("0020000001000003e83ff00000000000004000000000000000", generator_.generate(obj_))
49
- end
50
-
51
- def test_point_with_ewkb_z
52
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
53
- obj_ = @factoryz.point(1, 2, 3)
54
- assert_equal("00800000013ff000000000000040000000000000004008000000000000", generator_.generate(obj_))
55
- end
56
-
57
- def test_point_with_ewkb_m
58
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
59
- obj_ = @factorym.point(1, 2, 3)
60
- assert_equal("00400000013ff000000000000040000000000000004008000000000000", generator_.generate(obj_))
61
- end
62
-
63
- def test_point_with_ewkb_zm
64
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
65
- obj_ = @factoryzm.point(1, 2, 3, 4)
66
- assert_equal("00c00000013ff0000000000000400000000000000040080000000000004010000000000000", generator_.generate(obj_))
67
- end
68
-
69
- def test_point_with_wkb12_z
70
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :wkb12)
71
- obj_ = @factoryz.point(1, 2, 3)
72
- assert_equal("00000003e93ff000000000000040000000000000004008000000000000", generator_.generate(obj_))
73
- end
74
-
75
- def test_point_with_wkb12_m
76
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :wkb12)
77
- obj_ = @factorym.point(1, 2, 3)
78
- assert_equal("00000007d13ff000000000000040000000000000004008000000000000", generator_.generate(obj_))
79
- end
80
-
81
- def test_point_with_wkb12_zm
82
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :wkb12)
83
- obj_ = @factoryzm.point(1, 2, 3, 4)
84
- assert_equal("0000000bb93ff0000000000000400000000000000040080000000000004010000000000000", generator_.generate(obj_))
85
- end
86
-
87
- def test_linestring_basic
88
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
89
- obj_ = @factory.line_string([@factory.point(1, 2), @factory.point(3, 4), @factory.point(5, 6)])
90
- assert_equal("0000000002000000033ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000", generator_.generate(obj_))
91
- end
92
-
93
- def test_linestring_with_ewkb_z
94
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
95
- obj_ = @factoryz.line_string([@factoryz.point(1, 2, 3), @factoryz.point(4, 5, 6)])
96
- assert_equal("0080000002000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000", generator_.generate(obj_))
97
- end
98
-
99
- def test_linestring_with_ewkb_z_and_srid
100
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb, emit_ewkb_srid: true)
101
- obj_ = @factoryz.line_string([@factoryz.point(1, 2, 3), @factoryz.point(4, 5, 6)])
102
- assert_equal("00a0000002000003e8000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000", generator_.generate(obj_))
103
- end
104
-
105
- def test_linestring_with_wkb12_m
106
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :wkb12)
107
- obj_ = @factorym.line_string([@factorym.point(1, 2, 3), @factorym.point(4, 5, 6)])
108
- assert_equal("00000007d2000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000", generator_.generate(obj_))
109
- end
110
-
111
- def test_linestring_empty
112
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
113
- obj_ = @factory.line_string([])
114
- assert_equal("000000000200000000", generator_.generate(obj_))
115
- end
116
-
117
- def test_polygon_basic
118
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
119
- obj_ = @factory.polygon(@factory.linear_ring([@factory.point(1, 2), @factory.point(3, 4), @factory.point(6, 5), @factory.point(1, 2)]))
120
- assert_equal("000000000300000001000000043ff0000000000000400000000000000040080000000000004010000000000000401800000000000040140000000000003ff00000000000004000000000000000", generator_.generate(obj_))
121
- end
122
-
123
- def test_polygon_empty
124
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
125
- obj_ = @factory.polygon(@factory.linear_ring([]))
126
- assert_equal("000000000300000000", generator_.generate(obj_))
127
- end
128
-
129
- def test_multipoint_basic
130
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
131
- obj_ = @factory.multi_point([@factory.point(1, 2), @factory.point(3, 4)])
132
- assert_equal("00000000040000000200000000013ff00000000000004000000000000000000000000140080000000000004010000000000000", generator_.generate(obj_))
133
- end
134
-
135
- def test_multipoint_with_ewkb_z
136
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb)
137
- obj_ = @factoryz.multi_point([@factoryz.point(1, 2, 5), @factoryz.point(3, 4, 6)])
138
- assert_equal("00800000040000000200800000013ff0000000000000400000000000000040140000000000000080000001400800000000000040100000000000004018000000000000", generator_.generate(obj_))
139
- end
140
-
141
- def test_multipoint_empty
142
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
143
- obj_ = @factory.multi_point([])
144
- assert_equal("000000000400000000", generator_.generate(obj_))
145
- end
146
-
147
- def test_multilinestring_basic
148
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
149
- obj_ = @factory.multi_line_string([@factory.line_string([@factory.point(1, 2), @factory.point(3, 4), @factory.point(5, 6)]), @factory.line_string([@factory.point(-1, -2), @factory.point(-3, -4)])])
150
- assert_equal("0000000005000000020000000002000000033ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000000000000200000002bff0000000000000c000000000000000c008000000000000c010000000000000", generator_.generate(obj_))
151
- end
152
-
153
- def test_multilinestring_empty
154
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
155
- obj_ = @factory.multi_line_string([])
156
- assert_equal("000000000500000000", generator_.generate(obj_))
157
- end
158
-
159
- def test_multipolygon_basic
160
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
161
- obj_ = @factory.multi_polygon([@factory.polygon(@factory.linear_ring([@factory.point(1, 2), @factory.point(3, 4), @factory.point(6, 5), @factory.point(1, 2)])), @factory.polygon(@factory.linear_ring([]))])
162
- assert_equal("000000000600000002000000000300000001000000043ff0000000000000400000000000000040080000000000004010000000000000401800000000000040140000000000003ff00000000000004000000000000000000000000300000000", generator_.generate(obj_))
163
- end
164
-
165
- def test_multipolygon_empty
166
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
167
- obj_ = @factory.multi_polygon([])
168
- assert_equal("000000000600000000", generator_.generate(obj_))
169
- end
170
-
171
- def test_collection_basic
172
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
173
- obj_ = @factory.collection([@factory.line_string([@factory.point(1, 2), @factory.point(3, 4), @factory.point(5, 6)]), @factory.point(-1, -2)])
174
- assert_equal("0000000007000000020000000002000000033ff0000000000000400000000000000040080000000000004010000000000000401400000000000040180000000000000000000001bff0000000000000c000000000000000", generator_.generate(obj_))
175
- end
176
-
177
- def test_collection_empty
178
- generator_ = ::RGeo::WKRep::WKBGenerator.new(hex_format: true)
179
- obj_ = @factory.collection([])
180
- assert_equal("000000000700000000", generator_.generate(obj_))
181
- end
182
- end
183
- end
184
- end
185
- end
@@ -1,293 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for WKT parser
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module WKRep # :nodoc:
13
- class TestWKBParser < ::Test::Unit::TestCase # :nodoc:
14
- def test_point_2d_xdr_hex
15
- parser_ = ::RGeo::WKRep::WKBParser.new
16
- obj_ = parser_.parse("00000000013ff00000000000004000000000000000")
17
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
18
- assert_equal(1, obj_.x)
19
- assert_equal(2, obj_.y)
20
- end
21
-
22
- def test_point_2d_xdr_binary
23
- parser_ = ::RGeo::WKRep::WKBParser.new
24
- obj_ = parser_.parse(["00000000013ff00000000000004000000000000000"].pack("H*"))
25
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
26
- assert_equal(1, obj_.x)
27
- assert_equal(2, obj_.y)
28
- end
29
-
30
- def test_point_2d_ndr
31
- parser_ = ::RGeo::WKRep::WKBParser.new
32
- obj_ = parser_.parse("0101000000000000000000f03f0000000000000040")
33
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
34
- assert_equal(1, obj_.x)
35
- assert_equal(2, obj_.y)
36
- end
37
-
38
- def test_point_with_ewkb_z
39
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
40
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
41
- obj_ = parser_.parse("00800000013ff000000000000040000000000000004008000000000000")
42
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
43
- assert_equal(3, obj_.z)
44
- assert_nil(obj_.m)
45
- end
46
-
47
- def test_point_with_ewkb_m
48
- factory_ = ::RGeo::Cartesian.preferred_factory(has_m_coordinate: true)
49
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
50
- obj_ = parser_.parse("00400000013ff000000000000040000000000000004008000000000000")
51
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
52
- assert_equal(3, obj_.m)
53
- assert_nil(obj_.z)
54
- end
55
-
56
- def test_point_with_ewkb_zm
57
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true, has_m_coordinate: true)
58
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
59
- obj_ = parser_.parse("00c00000013ff0000000000000400000000000000040080000000000004010000000000000")
60
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
61
- assert_equal(3, obj_.z)
62
- assert_equal(4, obj_.m)
63
- end
64
-
65
- def test_point_with_wkb12_z
66
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
67
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_wkb12: true)
68
- obj_ = parser_.parse("00000003e93ff000000000000040000000000000004008000000000000")
69
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
70
- assert_equal(3, obj_.z)
71
- assert_nil(obj_.m)
72
- end
73
-
74
- def test_point_with_wkb12_m
75
- factory_ = ::RGeo::Cartesian.preferred_factory(has_m_coordinate: true)
76
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_wkb12: true)
77
- obj_ = parser_.parse("00000007d13ff000000000000040000000000000004008000000000000")
78
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
79
- assert_equal(3, obj_.m)
80
- assert_nil(obj_.z)
81
- end
82
-
83
- def test_point_with_wkb12_zm
84
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true, has_m_coordinate: true)
85
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_wkb12: true)
86
- obj_ = parser_.parse("0000000bb93ff0000000000000400000000000000040080000000000004010000000000000")
87
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
88
- assert_equal(3, obj_.z)
89
- assert_equal(4, obj_.m)
90
- end
91
-
92
- def test_point_with_wkb12_z_without_wkb12_support
93
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
94
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_)
95
- assert_raise(::RGeo::Error::ParseError) do
96
- parser_.parse("00000003e93ff000000000000040000000000000004008000000000000")
97
- end
98
- end
99
-
100
- def test_point_with_wkb12_z_without_enough_data
101
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
102
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_wkb12: true)
103
- assert_raise(::RGeo::Error::ParseError) do
104
- parser_.parse("00000003e93ff00000000000004000000000000000")
105
- end
106
- end
107
-
108
- def test_point_with_ewkb_z_and_srid
109
- factory_generator_ = ::Proc.new do |config_|
110
- ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true, srid: config_[:srid])
111
- end
112
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_generator_, support_ewkb: true)
113
- obj_ = parser_.parse("00a0000001000003e83ff000000000000040000000000000004008000000000000")
114
- assert_equal(::RGeo::Feature::Point, obj_.geometry_type)
115
- assert_equal(3, obj_.z)
116
- assert_nil(obj_.m)
117
- assert_equal(1000, obj_.srid)
118
- end
119
-
120
- def test_linestring_basic
121
- parser_ = ::RGeo::WKRep::WKBParser.new
122
- obj_ = parser_.parse("0000000002000000033ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000")
123
- assert_equal(::RGeo::Feature::LineString, obj_.geometry_type)
124
- assert_equal(3, obj_.num_points)
125
- assert_equal(1, obj_.point_n(0).x)
126
- assert_equal(6, obj_.point_n(2).y)
127
- end
128
-
129
- def test_linestring_with_ewkb_z
130
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
131
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
132
- obj_ = parser_.parse("0080000002000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000")
133
- assert_equal(::RGeo::Feature::LineString, obj_.geometry_type)
134
- assert_equal(2, obj_.num_points)
135
- assert_equal(1, obj_.point_n(0).x)
136
- assert_equal(6, obj_.point_n(1).z)
137
- end
138
-
139
- def test_linestring_with_ewkb_z_and_srid
140
- factory_generator_ = ::Proc.new do |config_|
141
- ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true, srid: config_[:srid])
142
- end
143
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_generator_, support_ewkb: true)
144
- obj_ = parser_.parse("00a0000002000003e8000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000")
145
- assert_equal(::RGeo::Feature::LineString, obj_.geometry_type)
146
- assert_equal(2, obj_.num_points)
147
- assert_equal(1, obj_.point_n(0).x)
148
- assert_equal(6, obj_.point_n(1).z)
149
- assert_equal(1000, obj_.srid)
150
- end
151
-
152
- def test_linestring_with_wkb12_z
153
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
154
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_wkb12: true)
155
- obj_ = parser_.parse("00000003ea000000023ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000")
156
- assert_equal(::RGeo::Feature::LineString, obj_.geometry_type)
157
- assert_equal(2, obj_.num_points)
158
- assert_equal(1, obj_.point_n(0).x)
159
- assert_equal(6, obj_.point_n(1).z)
160
- end
161
-
162
- def test_linestring_empty
163
- parser_ = ::RGeo::WKRep::WKBParser.new
164
- obj_ = parser_.parse("000000000200000000")
165
- assert_equal(::RGeo::Feature::LineString, obj_.geometry_type)
166
- assert_equal(0, obj_.num_points)
167
- end
168
-
169
- def test_polygon_basic
170
- parser_ = ::RGeo::WKRep::WKBParser.new
171
- obj_ = parser_.parse("000000000300000001000000043ff0000000000000400000000000000040080000000000004010000000000000401800000000000040140000000000003ff00000000000004000000000000000")
172
- assert_equal(::RGeo::Feature::Polygon, obj_.geometry_type)
173
- assert_equal(4, obj_.exterior_ring.num_points)
174
- assert_equal(1, obj_.exterior_ring.point_n(0).x)
175
- assert_equal(5, obj_.exterior_ring.point_n(2).y)
176
- end
177
-
178
- def test_polygon_empty
179
- parser_ = ::RGeo::WKRep::WKBParser.new
180
- obj_ = parser_.parse("000000000300000000")
181
- assert_equal(::RGeo::Feature::Polygon, obj_.geometry_type)
182
- assert_equal(0, obj_.exterior_ring.num_points)
183
- end
184
-
185
- def test_multipoint_basic
186
- parser_ = ::RGeo::WKRep::WKBParser.new
187
- obj_ = parser_.parse("00000000040000000200000000013ff00000000000004000000000000000000000000140080000000000004010000000000000")
188
- assert_equal(::RGeo::Feature::MultiPoint, obj_.geometry_type)
189
- assert_equal(2, obj_.num_geometries)
190
- assert_equal(1, obj_[0].x)
191
- assert_equal(4, obj_[1].y)
192
- end
193
-
194
- def test_multipoint_mixed_byte_order
195
- parser_ = ::RGeo::WKRep::WKBParser.new
196
- obj_ = parser_.parse("0000000004000000020101000000000000000000f03f0000000000000040000000000140080000000000004010000000000000")
197
- assert_equal(::RGeo::Feature::MultiPoint, obj_.geometry_type)
198
- assert_equal(2, obj_.num_geometries)
199
- assert_equal(1, obj_[0].x)
200
- assert_equal(4, obj_[1].y)
201
- end
202
-
203
- def test_multipoint_with_ewkb_z
204
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
205
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
206
- obj_ = parser_.parse("00800000040000000200800000013ff0000000000000400000000000000040140000000000000080000001400800000000000040100000000000004018000000000000")
207
- assert_equal(::RGeo::Feature::MultiPoint, obj_.geometry_type)
208
- assert_equal(2, obj_.num_geometries)
209
- assert_equal(1, obj_[0].x)
210
- assert_equal(5, obj_[0].z)
211
- assert_equal(4, obj_[1].y)
212
- assert_equal(6, obj_[1].z)
213
- assert_nil(obj_[0].m)
214
- end
215
-
216
- def test_multipoint_ewkb_with_mixed_z
217
- factory_ = ::RGeo::Cartesian.preferred_factory(has_z_coordinate: true)
218
- parser_ = ::RGeo::WKRep::WKBParser.new(factory_, support_ewkb: true)
219
- assert_raise(::RGeo::Error::ParseError) do
220
- parser_.parse("00800000040000000200800000013ff000000000000040000000000000004014000000000000000000000140080000000000004010000000000000")
221
- end
222
- end
223
-
224
- def test_multipoint_empty
225
- parser_ = ::RGeo::WKRep::WKBParser.new
226
- obj_ = parser_.parse("000000000400000000")
227
- assert_equal(::RGeo::Feature::MultiPoint, obj_.geometry_type)
228
- assert_equal(0, obj_.num_geometries)
229
- end
230
-
231
- def test_multilinestring_basic
232
- parser_ = ::RGeo::WKRep::WKBParser.new
233
- obj_ = parser_.parse("0000000005000000020000000002000000033ff000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000000000000200000002bff0000000000000c000000000000000c008000000000000c010000000000000")
234
- assert_equal(::RGeo::Feature::MultiLineString, obj_.geometry_type)
235
- assert_equal(2, obj_.num_geometries)
236
- assert_equal(1, obj_[0].point_n(0).x)
237
- assert_equal(-4, obj_[1].point_n(1).y)
238
- end
239
-
240
- def test_multilinestring_wrong_element_type
241
- parser_ = ::RGeo::WKRep::WKBParser.new
242
- assert_raise(::RGeo::Error::ParseError) do
243
- parser_.parse("0000000005000000020000000002000000033ff00000000000004000000000000000400800000000000040100000000000004014000000000000401800000000000000000000013ff00000000000004000000000000000")
244
- end
245
- end
246
-
247
- def test_multilinestring_empty
248
- parser_ = ::RGeo::WKRep::WKBParser.new
249
- obj_ = parser_.parse("000000000500000000")
250
- assert_equal(::RGeo::Feature::MultiLineString, obj_.geometry_type)
251
- assert_equal(0, obj_.num_geometries)
252
- end
253
-
254
- def test_multipolygon_basic
255
- parser_ = ::RGeo::WKRep::WKBParser.new
256
- obj_ = parser_.parse("000000000600000002000000000300000001000000043ff0000000000000400000000000000040080000000000004010000000000000401800000000000040140000000000003ff00000000000004000000000000000000000000300000000")
257
- assert_equal(::RGeo::Feature::MultiPolygon, obj_.geometry_type)
258
- assert_equal(2, obj_.num_geometries)
259
- assert_equal(4, obj_[0].exterior_ring.num_points)
260
- assert_equal(1, obj_[0].exterior_ring.point_n(0).x)
261
- assert_equal(5, obj_[0].exterior_ring.point_n(2).y)
262
- assert_equal(0, obj_[1].exterior_ring.num_points)
263
- end
264
-
265
- def test_multipolygon_empty
266
- parser_ = ::RGeo::WKRep::WKBParser.new
267
- obj_ = parser_.parse("000000000600000000")
268
- assert_equal(::RGeo::Feature::MultiPolygon, obj_.geometry_type)
269
- assert_equal(0, obj_.num_geometries)
270
- end
271
-
272
- def test_collection_basic
273
- parser_ = ::RGeo::WKRep::WKBParser.new
274
- obj_ = parser_.parse("0000000007000000020000000002000000033ff0000000000000400000000000000040080000000000004010000000000000401400000000000040180000000000000000000001bff0000000000000c000000000000000")
275
- assert_equal(::RGeo::Feature::GeometryCollection, obj_.geometry_type)
276
- assert_equal(2, obj_.num_geometries)
277
- assert_equal(::RGeo::Feature::LineString, obj_[0].geometry_type)
278
- assert_equal(1, obj_[0].point_n(0).x)
279
- assert_equal(6, obj_[0].point_n(2).y)
280
- assert_equal(::RGeo::Feature::Point, obj_[1].geometry_type)
281
- assert_equal(-1, obj_[1].x)
282
- end
283
-
284
- def test_collection_empty
285
- parser_ = ::RGeo::WKRep::WKBParser.new
286
- obj_ = parser_.parse("000000000700000000")
287
- assert_equal(::RGeo::Feature::GeometryCollection, obj_.geometry_type)
288
- assert_equal(0, obj_.num_geometries)
289
- end
290
- end
291
- end
292
- end
293
- end