proj4rb 2.0.0 → 3.0.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.
data/lib/proj.rb CHANGED
@@ -1,31 +1,31 @@
1
- # encoding: UTF-8
2
-
3
- require_relative 'api/api'
4
- require_relative './config'
5
-
6
- require_relative './area'
7
- require_relative './context'
8
- require_relative './coordinate'
9
- require_relative './ellipsoid'
10
- require_relative './error'
11
- require_relative './point'
12
- require_relative './prime_meridian'
13
- require_relative './unit'
14
-
15
- require_relative './pj_object'
16
- require_relative './operation'
17
- require_relative './crs'
18
- require_relative './projection'
19
- require_relative './transformation'
20
-
21
- module Proj
22
- def self.info
23
- Api.proj_info
24
- end
25
-
26
- def self.version
27
- self.info[:version]
28
- end
29
- end
30
-
31
- Proj::Config.instance.set_search_paths
1
+ # encoding: UTF-8
2
+
3
+ require_relative 'api/api'
4
+ require_relative 'proj/config'
5
+
6
+ require_relative 'proj/area'
7
+ require_relative 'proj/context'
8
+ require_relative 'proj/coordinate'
9
+ require_relative 'proj/ellipsoid'
10
+ require_relative 'proj/error'
11
+ require_relative 'proj/point'
12
+ require_relative 'proj/prime_meridian'
13
+ require_relative 'proj/unit'
14
+
15
+ require_relative 'proj/pj_object'
16
+ require_relative 'proj/operation'
17
+ require_relative 'proj/crs'
18
+ require_relative 'proj/projection'
19
+ require_relative 'proj/transformation'
20
+
21
+ module Proj
22
+ def self.info
23
+ Api.proj_info
24
+ end
25
+
26
+ def self.version
27
+ self.info[:version]
28
+ end
29
+ end
30
+
31
+ Proj::Config.instance.set_search_paths
data/proj4rb.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'proj4rb'
3
- spec.version = '2.0.0'
3
+ spec.version = '3.0.0'
4
4
  spec.summary = 'Ruby bindings for the Proj.4 Carthographic Projection library'
5
5
  spec.description = <<-EOF
6
6
  Proj4rb is a ruby binding for the Proj.4 Carthographic Projection library, that supports conversions between a very large number of geographic coordinate systems and datumspec.
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.platform = Gem::Platform::RUBY
9
9
  spec.authors = ['Guilhem Vellut', 'Jochen Topf', 'Charlie Savage']
10
10
  spec.homepage = 'https://github.com/cfis/proj4rb'
11
- spec.required_ruby_version = '>= 2.4.9'
11
+ spec.required_ruby_version = '>= 2.4.1'
12
12
  spec.license = 'MIT'
13
13
 
14
14
  spec.requirements << 'Proj (Proj4) Library'
@@ -19,13 +19,15 @@ Gem::Specification.new do |spec|
19
19
  'proj4rb.gemspec',
20
20
  'Rakefile',
21
21
  'README.rdoc',
22
- 'lib/*.rb',
22
+ 'lib/**/*.rb',
23
23
  'test/*.rb']
24
24
 
25
25
  spec.test_files = Dir["test/test_*.rb"]
26
26
 
27
27
  spec.add_dependency "ffi"
28
28
 
29
+ spec.add_development_dependency('bundler')
30
+ spec.add_development_dependency('rake')
29
31
  spec.add_development_dependency('minitest')
30
32
  spec.add_development_dependency('yard')
31
33
  end
data/test/context_test.rb CHANGED
@@ -1,82 +1,82 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './abstract_test'
4
-
5
- class ContextTest < AbstractTest
6
- def test_create
7
- context = Proj::Context.new
8
- assert(context.to_ptr)
9
- end
10
-
11
- def test_finalize
12
- 500.times do
13
- context = Proj::Context.new
14
- assert(context.to_ptr)
15
- GC.start
16
- end
17
- assert(true)
18
- end
19
-
20
- def test_one_per_thread
21
- context_1 = Proj::Context.current
22
- context_2 = Proj::Context.current
23
- assert_same(context_1, context_2)
24
- end
25
-
26
- def test_database_path
27
- refute_nil(Proj::Context.current.database_path)
28
- end
29
-
30
- def test_log_level
31
- assert_equal(:PJ_LOG_NONE, Proj::Context.current.log_level)
32
- end
33
-
34
- def test_set_log_level
35
- context = Proj::Context.new
36
- context.log_level = :PJ_LOG_ERROR
37
- assert_equal(:PJ_LOG_ERROR, context.log_level)
38
- end
39
-
40
- def test_invalid_database_path
41
- path = '/wrong'
42
- error = assert_raises(Proj::Error) do
43
- Proj::Context.current.database_path = path
44
- end
45
- # TODO - if you run this test on its own you get a useful error message, if you run all tests
46
- # at once you get a useless error message. Not sure what is causing the difference
47
- assert_match(/No such file or directory|generic error of unknown origin/, error.to_s)
48
- end
49
-
50
- def test_set_log_function
51
- context = Proj::Context.new
52
- called = false
53
-
54
- data = FFI::MemoryPointer.new(:int)
55
- data.write_int(5)
56
-
57
- context.set_log_function(data) do |pointer, int, message|
58
- called = true
59
- refute(pointer.null?)
60
- assert_equal(5, pointer.read_int)
61
- assert_equal(1, int)
62
- assert_equal('proj_context_set_database_path: Open of /wrong failed', message)
63
- end
64
-
65
- begin
66
- context.database_path = '/wrong'
67
- rescue
68
- end
69
-
70
- assert(called)
71
- end
72
-
73
- def test_use_proj4_init_rules
74
- refute(Proj::Context.current.use_proj4_init_rules)
75
-
76
- Proj::Context.current.use_proj4_init_rules = true
77
- assert(Proj::Context.current.use_proj4_init_rules)
78
-
79
- Proj::Context.current.use_proj4_init_rules = false
80
- refute(Proj::Context.current.use_proj4_init_rules)
81
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './abstract_test'
4
+
5
+ class ContextTest < AbstractTest
6
+ def test_create
7
+ context = Proj::Context.new
8
+ assert(context.to_ptr)
9
+ end
10
+
11
+ def test_finalize
12
+ 500.times do
13
+ context = Proj::Context.new
14
+ assert(context.to_ptr)
15
+ GC.start
16
+ end
17
+ assert(true)
18
+ end
19
+
20
+ def test_one_per_thread
21
+ context_1 = Proj::Context.current
22
+ context_2 = Proj::Context.current
23
+ assert_same(context_1, context_2)
24
+ end
25
+
26
+ def test_database_path
27
+ refute_nil(Proj::Context.current.database_path)
28
+ end
29
+
30
+ def test_log_level
31
+ assert_equal(:PJ_LOG_NONE, Proj::Context.current.log_level)
32
+ end
33
+
34
+ def test_set_log_level
35
+ context = Proj::Context.new
36
+ context.log_level = :PJ_LOG_ERROR
37
+ assert_equal(:PJ_LOG_ERROR, context.log_level)
38
+ end
39
+
40
+ def test_invalid_database_path
41
+ path = '/wrong'
42
+ error = assert_raises(Proj::Error) do
43
+ Proj::Context.current.database_path = path
44
+ end
45
+ # TODO - if you run this test on its own you get a useful error message, if you run all tests
46
+ # at once you get a useless error message. Not sure what is causing the difference
47
+ assert_match(/No such file or directory|generic error of unknown origin/, error.to_s)
48
+ end
49
+
50
+ def test_set_log_function
51
+ context = Proj::Context.new
52
+ called = false
53
+
54
+ data = FFI::MemoryPointer.new(:int)
55
+ data.write_int(5)
56
+
57
+ context.set_log_function(data) do |pointer, int, message|
58
+ called = true
59
+ refute(pointer.null?)
60
+ assert_equal(5, pointer.read_int)
61
+ assert_equal(1, int)
62
+ assert_equal('proj_context_set_database_path: Open of /wrong failed', message)
63
+ end
64
+
65
+ begin
66
+ context.database_path = '/wrong'
67
+ rescue
68
+ end
69
+
70
+ assert(called)
71
+ end
72
+
73
+ def test_use_proj4_init_rules
74
+ refute(Proj::Context.current.use_proj4_init_rules)
75
+
76
+ Proj::Context.current.use_proj4_init_rules = true
77
+ assert(Proj::Context.current.use_proj4_init_rules)
78
+
79
+ Proj::Context.current.use_proj4_init_rules = false
80
+ refute(Proj::Context.current.use_proj4_init_rules)
81
+ end
82
82
  end
data/test/crs_test.rb CHANGED
@@ -221,7 +221,7 @@ class CrsTest < AbstractTest
221
221
  crs = Proj::Crs.new('EPSG:26915')
222
222
  expected = <<~EOS
223
223
  {
224
- "$schema": "https://proj.org/schemas/v0.1/projjson.schema.json",
224
+ "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json",
225
225
  "type": "ProjectedCRS",
226
226
  "name": "NAD83 / UTM zone 15N",
227
227
  "base_crs": {
data/test/proj_test.rb CHANGED
@@ -5,11 +5,11 @@ require_relative './abstract_test'
5
5
  class ProjTest < AbstractTest
6
6
  def test_info
7
7
  info = Proj.info
8
- assert_equal(6, info[:major])
9
- assert_equal(2, info[:minor])
10
- assert_equal(1, info[:patch])
11
- assert_equal('Rel. 6.2.1, November 1st, 2019', info[:release])
12
- assert_equal('6.2.1', info[:version])
8
+ assert([4,6,7,8].include?(info[:major]))
9
+ assert([0,1,2,3].include?(info[:minor]))
10
+ assert([0,1,2,3].include?(info[:patch]))
11
+ refute_nil(info[:release])
12
+ assert_match(/\d\.\d\.\d/, info[:version])
13
13
  refute_nil(info[:searchpath])
14
14
  refute(info[:paths].null?)
15
15
  assert_equal(1, info[:path_count])