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
@@ -1,28 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple cartesian multi line string implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_line_string_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleCartesian # :nodoc:
15
- class TestMultiLineString < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory
17
- @factory = ::RGeo::Cartesian.simple_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::MultiLineStringTests
21
-
22
- undef_method :test_fully_equal
23
- undef_method :test_geometrically_equal
24
- undef_method :test_not_equal
25
- end
26
- end
27
- end
28
- end
@@ -1,31 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple cartesian multi point implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_point_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleCartesian # :nodoc:
15
- class TestMultiPoint < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory(opts_ = {})
17
- @factory = ::RGeo::Cartesian.simple_factory(opts_)
18
- end
19
-
20
- include ::RGeo::Tests::Common::MultiPointTests
21
-
22
- undef_method :test_fully_equal
23
- undef_method :test_geometrically_equal
24
- undef_method :test_not_equal
25
- undef_method :test_union
26
- undef_method :test_difference
27
- undef_method :test_intersection
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple cartesian multi polygon implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_polygon_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleCartesian # :nodoc:
15
- class TestMultiPolygon < ::Test::Unit::TestCase # :nodoc:
16
- def create_factories
17
- @factory = ::RGeo::Cartesian.simple_factory
18
- @lenient_factory = ::RGeo::Cartesian.simple_factory(lenient_multi_polygon_assertions: true)
19
- end
20
-
21
- include ::RGeo::Tests::Common::MultiPolygonTests
22
-
23
- undef_method :test_creation_wrong_type
24
- undef_method :test_creation_overlapping
25
- undef_method :test_creation_connected
26
- undef_method :test_equal
27
- undef_method :test_not_equal
28
- end
29
- end
30
- end
31
- end
@@ -1,50 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple cartesian point implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/point_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleCartesian # :nodoc:
15
- class TestPoint < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Cartesian.simple_factory(srid: 1, buffer_resolution: 8)
18
- @zfactory = ::RGeo::Cartesian.simple_factory(srid: 1, has_z_coordinate: true)
19
- @mfactory = ::RGeo::Cartesian.simple_factory(srid: 1, has_m_coordinate: true)
20
- @zmfactory = ::RGeo::Cartesian.simple_factory(srid: 1, has_z_coordinate: true, has_m_coordinate: true)
21
- end
22
-
23
- include ::RGeo::Tests::Common::PointTests
24
-
25
- def test_srid
26
- point_ = @factory.point(11, 12)
27
- assert_equal(1, point_.srid)
28
- end
29
-
30
- def test_distance
31
- point1_ = @factory.point(2, 2)
32
- point2_ = @factory.point(7, 14)
33
- assert_in_delta(13, point1_.distance(point2_), 0.0001)
34
- end
35
-
36
- undef_method :test_disjoint
37
- undef_method :test_intersects
38
- undef_method :test_touches
39
- undef_method :test_crosses
40
- undef_method :test_within
41
- undef_method :test_contains
42
- undef_method :test_overlaps
43
- undef_method :test_intersection
44
- undef_method :test_union
45
- undef_method :test_difference
46
- undef_method :test_sym_difference
47
- end
48
- end
49
- end
50
- end
@@ -1,28 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple cartesian polygon implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/polygon_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleCartesian # :nodoc:
15
- class TestPolygon < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Cartesian.simple_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::PolygonTests
21
-
22
- undef_method :test_fully_equal
23
- undef_method :test_geometrically_equal_but_ordered_different
24
- undef_method :test_geometrically_equal_but_different_directions
25
- end
26
- end
27
- end
28
- end
@@ -1,25 +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 SimpleMercator # :nodoc:
15
- class TestFactory < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Geographic.simple_mercator_factory
18
- @srid = 4326
19
- end
20
-
21
- include ::RGeo::Tests::Common::FactoryTests
22
- end
23
- end
24
- end
25
- end
@@ -1,24 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator 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 SimpleMercator # :nodoc:
15
- class TestGeometryCollection < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory
17
- ::RGeo::Geographic.simple_mercator_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::GeometryCollectionTests
21
- end
22
- end
23
- end
24
- end
@@ -1,24 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator 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 SimpleMercator # :nodoc:
15
- class TestLineString < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Geographic.simple_mercator_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::LineStringTests
21
- end
22
- end
23
- end
24
- end
@@ -1,26 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator multi line string implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_line_string_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleMercator # :nodoc:
15
- class TestMultiLineString < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory
17
- ::RGeo::Geographic.simple_mercator_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::MultiLineStringTests
21
-
22
- undef_method :test_length
23
- end
24
- end
25
- end
26
- end
@@ -1,29 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator multi point implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_point_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleMercator # :nodoc:
15
- class TestMultiPoint < ::Test::Unit::TestCase # :nodoc:
16
- def create_factory(opts_ = {})
17
- ::RGeo::Geographic.simple_mercator_factory(opts_)
18
- end
19
-
20
- include ::RGeo::Tests::Common::MultiPointTests
21
-
22
- # These tests suffer from floating point issues
23
- undef_method :test_union
24
- undef_method :test_difference
25
- undef_method :test_intersection
26
- end
27
- end
28
- end
29
- end
@@ -1,25 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator multi polygon implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/multi_polygon_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleMercator # :nodoc:
15
- class TestMultiPolygon < ::Test::Unit::TestCase # :nodoc:
16
- def create_factories
17
- @factory = ::RGeo::Geographic.simple_mercator_factory
18
- @lenient_factory = ::RGeo::Geographic.simple_mercator_factory(lenient_multi_polygon_assertions: true)
19
- end
20
-
21
- include ::RGeo::Tests::Common::MultiPolygonTests
22
- end
23
- end
24
- end
25
- end
@@ -1,55 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator point implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/point_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleMercator # :nodoc:
15
- class TestPoint < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Geographic.simple_mercator_factory(buffer_resolution: 8)
18
- @zfactory = ::RGeo::Geographic.simple_mercator_factory(has_z_coordinate: true)
19
- @mfactory = ::RGeo::Geographic.simple_mercator_factory(has_m_coordinate: true)
20
- @zmfactory = ::RGeo::Geographic.simple_mercator_factory(has_z_coordinate: true, has_m_coordinate: true)
21
- end
22
-
23
- include ::RGeo::Tests::Common::PointTests
24
-
25
- # TEMP until ffi-geos 0.0.5 is released
26
- undef_method :test_buffer
27
- # END_TEMP
28
-
29
- def test_has_projection
30
- point_ = @factory.point(21, -22)
31
- assert(point_.respond_to?(:projection))
32
- end
33
-
34
- def test_latlon
35
- point_ = @factory.point(21, -22)
36
- assert_equal(21, point_.longitude)
37
- assert_equal(-22, point_.latitude)
38
- end
39
-
40
- def test_srid
41
- point_ = @factory.point(11, 12)
42
- assert_equal(4326, point_.srid)
43
- end
44
-
45
- def test_distance
46
- point1_ = @factory.point(11, 12)
47
- point2_ = @factory.point(11, 12)
48
- point3_ = @factory.point(13, 12)
49
- assert_in_delta(0, point1_.distance(point2_), 0.0001)
50
- assert_in_delta(222_638, point1_.distance(point3_), 1)
51
- end
52
- end
53
- end
54
- end
55
- end
@@ -1,24 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator polygon implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- require ::File.expand_path("../common/polygon_tests.rb", ::File.dirname(__FILE__))
11
-
12
- module RGeo
13
- module Tests # :nodoc:
14
- module SimpleMercator # :nodoc:
15
- class TestPolygon < ::Test::Unit::TestCase # :nodoc:
16
- def setup
17
- @factory = ::RGeo::Geographic.simple_mercator_factory
18
- end
19
-
20
- include ::RGeo::Tests::Common::PolygonTests
21
- end
22
- end
23
- end
24
- end
@@ -1,173 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- #
3
- # Tests for the simple mercator window implementation
4
- #
5
- # -----------------------------------------------------------------------------
6
-
7
- require "test/unit"
8
- require "rgeo"
9
-
10
- module RGeo
11
- module Tests # :nodoc:
12
- module SimpleMercator # :nodoc:
13
- class TestWindow < ::Test::Unit::TestCase # :nodoc:
14
- def setup
15
- @factory = ::RGeo::Geographic.simple_mercator_factory
16
- end
17
-
18
- def assert_close_enough(p1_, p2_)
19
- assert((p1_.x - p2_.x).abs < 0.00001 && (p1_.y - p2_.y).abs < 0.00001)
20
- end
21
-
22
- def assert_contains_approx(p_, mp_)
23
- assert(mp_.any? { |q_| (p_.x - q_.x).abs < 0.00001 && (p_.y - q_.y).abs < 0.00001 })
24
- end
25
-
26
- def test_limits
27
- limits_ = @factory.projection_limits_window
28
- assert_in_delta(-20_037_508, limits_.x_min, 1)
29
- assert_in_delta(-20_037_508, limits_.y_min, 1)
30
- assert_in_delta(20_037_508, limits_.x_max, 1)
31
- assert_in_delta(20_037_508, limits_.y_max, 1)
32
- end
33
-
34
- def test_limits_unprojected
35
- limits_ = @factory.projection_limits_window
36
- assert_close_enough(@factory.point(-180, -85.051129), limits_.sw_point)
37
- assert_close_enough(@factory.point(180, -85.051129), limits_.se_point)
38
- assert_close_enough(@factory.point(-180, 85.051129), limits_.nw_point)
39
- assert_close_enough(@factory.point(180, 85.051129), limits_.ne_point)
40
- assert_close_enough(@factory.point(0, 0), limits_.center_point)
41
- end
42
-
43
- def test_center_point
44
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(-160, -30), @factory.point(170, 30))
45
- assert_close_enough(@factory.point(5, 0), window1_.center_point)
46
- window2_ = Geographic::ProjectedWindow.for_corners(@factory.point(160, -30), @factory.point(-170, 30))
47
- assert_close_enough(@factory.point(175, 0), window2_.center_point)
48
- end
49
-
50
- def test_random_point
51
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(-170, 30), @factory.point(-160, 40))
52
- 20.times { assert(window1_.contains_point?(window1_.random_point)) }
53
- window2_ = Geographic::ProjectedWindow.for_corners(@factory.point(170, 30), @factory.point(-170, 40))
54
- 20.times { assert(window2_.contains_point?(window2_.random_point)) }
55
- end
56
-
57
- def test_crosses_seam
58
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(-170, 30), @factory.point(170, 40))
59
- assert(!window1_.crosses_seam?)
60
- window2_ = Geographic::ProjectedWindow.for_corners(@factory.point(170, 30), @factory.point(-170, 40))
61
- assert(window2_.crosses_seam?)
62
- end
63
-
64
- def test_degenerate
65
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(-20, 30), @factory.point(-10, 40))
66
- assert(!window1_.degenerate?)
67
- window2_ = Geographic::ProjectedWindow.for_corners(@factory.point(-20, 30), @factory.point(-20, 40))
68
- assert(window2_.degenerate?)
69
- window3_ = Geographic::ProjectedWindow.for_corners(@factory.point(-20, 30), @factory.point(-10, 30))
70
- assert(window3_.degenerate?)
71
- end
72
-
73
- def test_contains_point
74
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(-170, 30), @factory.point(-160, 40))
75
- window2_ = Geographic::ProjectedWindow.for_corners(@factory.point(170, 30), @factory.point(-170, 40))
76
- point1_ = @factory.point(-169, 32)
77
- point2_ = @factory.point(-171, 32)
78
- point3_ = @factory.point(-169, 29)
79
- point4_ = @factory.point(171, 32)
80
- point5_ = @factory.point(169, 32)
81
- assert(window1_.contains_point?(point1_))
82
- assert(!window1_.contains_point?(point2_))
83
- assert(!window1_.contains_point?(point3_))
84
- assert(!window2_.contains_point?(point1_))
85
- assert(window2_.contains_point?(point2_))
86
- assert(window2_.contains_point?(point4_))
87
- assert(!window2_.contains_point?(point5_))
88
- end
89
-
90
- def test_noseam_contains_window
91
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(10, 10), @factory.point(30, 30))
92
- assert(window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 15), @factory.point(25, 25))))
93
-
94
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(5, 15), @factory.point(25, 25))))
95
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 15), @factory.point(35, 25))))
96
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(0, 15), @factory.point(5, 25))))
97
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(35, 15), @factory.point(40, 25))))
98
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(5, 15), @factory.point(35, 25))))
99
-
100
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 5), @factory.point(25, 25))))
101
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 15), @factory.point(25, 35))))
102
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 0), @factory.point(25, 5))))
103
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 35), @factory.point(25, 40))))
104
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(15, 5), @factory.point(25, 35))))
105
-
106
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(170, 35), @factory.point(-170, 40))))
107
- end
108
-
109
- def test_seam_contains_window
110
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(160, 10), @factory.point(-160, 30))
111
- assert(window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(175, 15), @factory.point(-175, 25))))
112
- assert(window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(170, 15), @factory.point(175, 25))))
113
- assert(window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(-175, 15), @factory.point(-170, 25))))
114
-
115
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(150, 15), @factory.point(170, 25))))
116
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(150, 15), @factory.point(-170, 25))))
117
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(-170, 15), @factory.point(-150, 25))))
118
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(170, 15), @factory.point(-150, 25))))
119
-
120
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(-150, 15), @factory.point(150, 25))))
121
- assert(!window1_.contains_window?(Geographic::ProjectedWindow.for_corners(@factory.point(150, 15), @factory.point(-150, 25))))
122
- end
123
-
124
- def test_scaled_by
125
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(20, -20), @factory.point(50, 40))
126
- window1s_ = window1_.scaled_by(2, 1.5)
127
- assert(window1s_.contains_point?(@factory.point(10, -25)))
128
- assert(window1s_.contains_point?(@factory.point(60, 45)))
129
- assert(!window1s_.contains_point?(@factory.point(0, -25)))
130
- assert(!window1s_.contains_point?(@factory.point(10, -35)))
131
- end
132
-
133
- def test_scaled_by_across_seam
134
- window1_ = Geographic::ProjectedWindow.for_corners(@factory.point(170, -20), @factory.point(-160, 40))
135
- window1s_ = window1_.scaled_by(2, 1.5)
136
- assert(window1s_.contains_point?(@factory.point(160, -25)))
137
- assert(window1s_.contains_point?(@factory.point(-150, 45)))
138
- assert(!window1s_.contains_point?(@factory.point(150, -25)))
139
- assert(!window1s_.contains_point?(@factory.point(-140, 45)))
140
- end
141
-
142
- def test_surrounding_point
143
- window1_ = Geographic::ProjectedWindow.surrounding_point(@factory.point(20, -20), 1)
144
- assert(window1_.contains_point?(@factory.point(20, -20)))
145
- assert(!window1_.contains_point?(@factory.point(20, -21)))
146
- assert(!window1_.contains_point?(@factory.point(19, -20)))
147
- end
148
-
149
- def test_bounding_1_point
150
- window1_ = Geographic::ProjectedWindow.bounding_points([@factory.point(20, -20)]).with_margin(1)
151
- assert(window1_.contains_point?(@factory.point(20, -20)))
152
- assert(!window1_.contains_point?(@factory.point(20, -21)))
153
- assert(!window1_.contains_point?(@factory.point(19, -20)))
154
- end
155
-
156
- def test_bounding_2_points
157
- window1_ = Geographic::ProjectedWindow.bounding_points([@factory.point(10, 10), @factory.point(30, 30)])
158
- assert(window1_.contains_point?(@factory.point(20, 20)))
159
- assert(!window1_.contains_point?(@factory.point(5, 20)))
160
- assert(!window1_.contains_point?(@factory.point(20, 35)))
161
- end
162
-
163
- def test_bounding_2_points_across_seam
164
- window1_ = Geographic::ProjectedWindow.bounding_points([@factory.point(-170, 10), @factory.point(170, 30)])
165
- assert(window1_.contains_point?(@factory.point(-174, 20)))
166
- assert(!window1_.contains_point?(@factory.point(-160, 20)))
167
- assert(!window1_.contains_point?(@factory.point(160, 20)))
168
- assert(!window1_.contains_point?(@factory.point(-174, 35)))
169
- end
170
- end
171
- end
172
- end
173
- end