rgeo 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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