gis-distance 1.0.2 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ada8cb52ba2e522d5315e73c94a72b9c766b53bd24e37d72448ffdaed26abdc
4
- data.tar.gz: 1cd738a5fed67d46ffe50358d3a72db781fe2d5f17e73e0cece9b6244d7f0127
3
+ metadata.gz: d53bfba92587a4e24a8e79783b523961f5649f8e677197160d1788230ff741b4
4
+ data.tar.gz: 78540a52eeac8d58a13bf99d03bccbbf7277f7aac8db0c9c1913301e4ef9d7ab
5
5
  SHA512:
6
- metadata.gz: 7b34a028b93f9d24d25c5d6bfb3a154e2948ad4f9e2862c485abfb5fb62ba490e342f8d830735c198ee0fc211519e882bea031ea2c000c7a933eae1d89dca8ef
7
- data.tar.gz: d49169c3d2f9e433a17d082259ffa5cabe52ed4f63a8d92be13ce29f3906148d55f3cfc02c8646a645f98fb012f14ea7967db9c0c4890110e8ea8c46fce940b3
6
+ metadata.gz: 9b87053488d8079fcd34c5260f6ee01777cff4499af6ab5f88928d98f26977e4195a4584199dfb13f70d986a7bb50934ded14e3dc46fc95c9329e2a8b2ab9340
7
+ data.tar.gz: 2b1b1e061f1fd25dc19ccf2163216a9fe822462d6d9c40b3e834b269d8817e3b965e5879598638ed9366f735cb48b4104ee2b1d34f6fd324e179322b92a85560
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,4 +1,8 @@
1
- == 1.0.2 - 22-Mar-2018
1
+ ## 1.1.0 - 27-Feb-2021
2
+ * Switched from test-unit to rspec.
3
+ * Added a Gemfile.
4
+
5
+ ## 1.0.2 - 22-Mar-2018
2
6
  * Added 'cosines' as a supported formula. This will use the Law of cosines
3
7
  to calculate the distance.
4
8
  * Added metadata to the gemspec.
@@ -6,8 +10,8 @@
6
10
  * Rakefile now assumes Rubygems 2.x, and other minor updates.
7
11
  * Added a gis-distance.rb file for convenience.
8
12
 
9
- == 1.0.1 - 26-Oct-2014
13
+ ## 1.0.1 - 26-Oct-2014
10
14
  * Updated gemspec, Rakefile.
11
15
 
12
- == 1.0.0 - 10-Oct-2009
16
+ ## 1.0.0 - 10-Oct-2009
13
17
  * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org' do
2
+ gemspec
3
+ end
@@ -1,6 +1,7 @@
1
- * CHANGES
2
- * MANIFEST
3
- * README
1
+ * CHANGES.md
2
+ * MANIFEST.md
3
+ * README.md
4
+ * Gemfile
4
5
  * Rakefile
5
6
  * gis-distance.gemspec
6
7
  * lib/gis-distance.rb
@@ -1,11 +1,12 @@
1
- == Description
1
+ ## Description
2
2
  The gis-distance library allows you to calculate geographic distance between
3
3
  two points using the formula of your choice.
4
4
 
5
- == Installation
6
- gem install gis-distance
5
+ ## Installation
6
+ `gem install gis-distance`
7
7
 
8
- == Synopsis
8
+ ## Synopsis
9
+ ```ruby
9
10
  require 'gis/distance' # or 'gis-distance'
10
11
 
11
12
  # New York to Los Angeles
@@ -17,10 +18,18 @@ gis.formula = 'haversine'
17
18
 
18
19
  p gis.distance # Kilometers
19
20
  p gis.distance.mi # Miles
21
+ ```
20
22
 
21
- == License
22
- Artistic 2.0
23
+ ## Available Formulas
24
+ * haversine (https://en.wikipedia.org/wiki/Haversine_formula)
25
+ * cosine (https://en.wikipedia.org/wiki/Law_of_cosines)
23
26
 
24
- == Authors
27
+ ## See Also
28
+ http://en.wikipedia.org/wiki/Earth_radius
29
+
30
+ ## License
31
+ Artistic-2.0
32
+
33
+ ## Authors
25
34
  * Daniel Berger
26
35
  * Ardith Falkner
data/Rakefile CHANGED
@@ -1,8 +1,7 @@
1
1
  require 'rake'
2
2
  require 'rake/clean'
3
- require 'rake/testtask'
4
3
  require 'rbconfig'
5
- include RbConfig
4
+ require 'rspec/core/rake_task'
6
5
 
7
6
  CLEAN.include('**/*.gem', '**/*.log')
8
7
 
@@ -12,7 +11,7 @@ namespace 'gem' do
12
11
  require 'rubygems/package'
13
12
  spec = eval(IO.read('gis-distance.gemspec'))
14
13
  spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
15
- Gem::Package.build(spec, true)
14
+ Gem::Package.build(spec)
16
15
  end
17
16
 
18
17
  desc 'Install the gis-distance gem'
@@ -22,9 +21,7 @@ namespace 'gem' do
22
21
  end
23
22
  end
24
23
 
25
- Rake::TestTask.new do |t|
26
- t.warning = true
27
- t.verbose = true
28
- end
24
+ desc "Run the test suite"
25
+ RSpec::Core::RakeTask.new(:spec)
29
26
 
30
- task :default => :test
27
+ task :default => :spec
data/gis-distance.gemspec CHANGED
@@ -2,17 +2,18 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'gis-distance'
5
- spec.version = '1.0.2'
5
+ spec.version = '1.1.0'
6
6
  spec.authors = ['Daniel J. Berger', 'Ardith Falkner']
7
- spec.license = 'Artistic 2.0'
7
+ spec.license = 'Artistic-2.0'
8
8
  spec.description = 'Calculate the distance between two points on Earth'
9
9
  spec.email = 'djberg96@gmail.com'
10
10
  spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
11
- spec.test_files = ['test/test_gis_distance.rb']
11
+ spec.test_files = Dir['spec/*_spec.rb']
12
12
  spec.homepage = 'http://github.com/djberg96/gis-distance'
13
13
  spec.cert_chain = ['certs/djberg96_pub.pem']
14
14
 
15
- spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
15
+ spec.add_development_dependency('rake')
16
+ spec.add_development_dependency('rspec', '~> 3.9')
16
17
 
17
18
  spec.metadata = {
18
19
  'homepage_uri' => 'https://github.com/djberg96/gis-distance',
data/lib/gis/distance.rb CHANGED
@@ -6,7 +6,7 @@ module GIS
6
6
  class Error < StandardError; end
7
7
 
8
8
  # The version of the gis-distance library
9
- VERSION = '1.0.2'.freeze
9
+ VERSION = '1.1.0'.freeze
10
10
 
11
11
  # Create a new GIS::Distance object using the two sets of coordinates
12
12
  # that are provided.
@@ -0,0 +1,94 @@
1
+ require 'rspec'
2
+ require 'gis/distance'
3
+
4
+ RSpec.describe GIS::Distance do
5
+ let(:gis){ GIS::Distance.new(40.47, 73.58, 34.3, 118.15) }
6
+
7
+ example "version" do
8
+ expect(GIS::Distance::VERSION).to eq('1.1.0')
9
+ expect(GIS::Distance::VERSION).to be_frozen
10
+ end
11
+
12
+ example "distance basic functionality" do
13
+ expect(gis).to respond_to(:distance)
14
+ expect{ gis.distance }.not_to raise_error
15
+ expect(gis.distance).to be_kind_of(Float)
16
+ end
17
+
18
+ example "distance method returns expected result" do
19
+ expect(gis.distance).to be_within(0.01).of(3952.39)
20
+ expect(GIS::Distance.new(40.47, 73.58, 40.47, 73.58).distance).to eq(0.0)
21
+ end
22
+
23
+ example "constructor requires four arguments" do
24
+ expect{ GIS::Distance.new }.to raise_error(ArgumentError)
25
+ expect{ GIS::Distance.new(40.47) }.to raise_error(ArgumentError)
26
+ expect{ GIS::Distance.new(40.47, 73.58) }.to raise_error(ArgumentError)
27
+ expect{ GIS::Distance.new(40.47, 73.58, 34.3) }.to raise_error(ArgumentError)
28
+ end
29
+
30
+ example "latitude and longitude must be within range" do
31
+ expect{ GIS::Distance.new(91.0, 100.0, 45.0, 45.0) }.to raise_error(GIS::Distance::Error)
32
+ expect{ GIS::Distance.new(90.0, 190.0, 45.0, 45.0) }.to raise_error(GIS::Distance::Error)
33
+ end
34
+
35
+ example "radius basic functionality" do
36
+ expect(gis).to respond_to(:radius)
37
+ expect{ gis.radius }.not_to raise_error
38
+ expect( gis.radius).to be_kind_of(Float)
39
+ end
40
+
41
+ example "default radius returns expected value" do
42
+ expect(gis.radius).to eq(6367.45)
43
+ end
44
+
45
+ example "radius does not accept an argument" do
46
+ expect{ gis.radius(1) }.to raise_error(ArgumentError)
47
+ end
48
+
49
+ example "radius setter basic functionality" do
50
+ expect(gis).to respond_to(:radius=)
51
+ expect{ gis.radius = 6368.0 }.not_to raise_error
52
+ expect( gis.radius).to eq(6368.0)
53
+ end
54
+
55
+ example "radius value must be within a certain range" do
56
+ expect{ gis.radius = 6200 }.to raise_error(GIS::Distance::Error)
57
+ expect{ gis.radius = 6400 }.to raise_error(GIS::Distance::Error)
58
+ end
59
+
60
+ example "formula basic functionality" do
61
+ expect(gis).to respond_to(:formula)
62
+ expect{ gis.formula }.not_to raise_error
63
+ expect(gis.formula).to be_kind_of(String)
64
+ end
65
+
66
+ example "formula default value" do
67
+ expect(gis.formula).to eq('haversine')
68
+ end
69
+
70
+ example "formula setter basic functionality" do
71
+ expect(gis).to respond_to(:formula=)
72
+ expect{ gis.formula = 'haversine' }.not_to raise_error
73
+ end
74
+
75
+ example "formula setter validates value" do
76
+ expect{ gis.formula(1) }.to raise_error(ArgumentError)
77
+ expect{ gis.formula = 'foo' }.to raise_error(GIS::Distance::Error)
78
+ end
79
+
80
+ example "mi basic functionality" do
81
+ expect(gis.distance).to respond_to(:mi)
82
+ expect{ gis.distance.mi }.not_to raise_error
83
+ expect(gis.distance.mi).to be_kind_of(Float)
84
+ end
85
+
86
+ example "mi behaves as expected" do
87
+ expect(gis.distance).to be > gis.distance.mi
88
+ expect(gis.distance.mi).to be_within(0.1).of(2455.9)
89
+ end
90
+
91
+ example "mi_expected_errors" do
92
+ expect{ gis.distance.mi(1) }.to raise_error(ArgumentError)
93
+ end
94
+ end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gis-distance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
8
8
  - Ardith Falkner
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - |
@@ -36,33 +36,55 @@ cert_chain:
36
36
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
37
37
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
38
38
  -----END CERTIFICATE-----
39
- date: 2018-03-22 00:00:00.000000000 Z
40
- dependencies: []
39
+ date: 2021-02-27 00:00:00.000000000 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.9'
41
69
  description: Calculate the distance between two points on Earth
42
70
  email: djberg96@gmail.com
43
71
  executables: []
44
72
  extensions: []
45
- extra_rdoc_files:
46
- - README
47
- - CHANGES
48
- - MANIFEST
73
+ extra_rdoc_files: []
49
74
  files:
50
- - certs
75
+ - CHANGES.md
76
+ - Gemfile
77
+ - MANIFEST.md
78
+ - README.md
79
+ - Rakefile
51
80
  - certs/djberg96_pub.pem
52
- - CHANGES
53
81
  - gis-distance.gemspec
54
- - lib
55
- - lib/gis
56
- - lib/gis/distance.rb
57
82
  - lib/gis-distance.rb
58
- - MANIFEST
59
- - Rakefile
60
- - README
61
- - test
62
- - test/test_gis_distance.rb
83
+ - lib/gis/distance.rb
84
+ - spec/gis_distance_spec.rb
63
85
  homepage: http://github.com/djberg96/gis-distance
64
86
  licenses:
65
- - Artistic 2.0
87
+ - Artistic-2.0
66
88
  metadata:
67
89
  homepage_uri: https://github.com/djberg96/gis-distance
68
90
  bug_tracker_uri: https://github.com/djberg96/gis-distance/issues
@@ -70,7 +92,7 @@ metadata:
70
92
  documentation_uri: https://github.com/djberg96/gis-distance/wiki
71
93
  source_code_uri: https://github.com/djberg96/gis-distance
72
94
  wiki_uri: https://github.com/djberg96/gis-distance/wiki
73
- post_install_message:
95
+ post_install_message:
74
96
  rdoc_options: []
75
97
  require_paths:
76
98
  - lib
@@ -85,11 +107,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
107
  - !ruby/object:Gem::Version
86
108
  version: '0'
87
109
  requirements: []
88
- rubyforge_project:
89
- rubygems_version: 2.7.6
90
- signing_key:
110
+ rubygems_version: 3.0.3
111
+ signing_key:
91
112
  specification_version: 4
92
113
  summary: The gis-distance library provides a simple interface for calculating the
93
114
  distance between two points on Earth using latitude and longitude.
94
115
  test_files:
95
- - test/test_gis_distance.rb
116
+ - spec/gis_distance_spec.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,99 +0,0 @@
1
- require 'test/unit'
2
- require 'gis/distance'
3
-
4
- class TC_GIS_Distance < Test::Unit::TestCase
5
- def setup
6
- @gis = GIS::Distance.new(40.47, 73.58, 34.3, 118.15)
7
- end
8
-
9
- def test_version
10
- assert_equal('1.0.2', GIS::Distance::VERSION)
11
- assert_true(GIS::Distance::VERSION.frozen?)
12
- end
13
-
14
- def test_distance_basic_functionality
15
- assert_respond_to(@gis, :distance)
16
- assert_nothing_raised{ @gis.distance }
17
- assert_kind_of(Float, @gis.distance)
18
- end
19
-
20
- def test_distance
21
- assert_in_delta(0.01, 3952.39, @gis.distance)
22
- assert_equal(0.0, GIS::Distance.new(40.47, 73.58, 40.47, 73.58).distance)
23
- end
24
-
25
- def test_distance_expected_argument_errors
26
- assert_raise(ArgumentError){ GIS::Distance.new }
27
- assert_raise(ArgumentError){ GIS::Distance.new(40.47) }
28
- assert_raise(ArgumentError){ GIS::Distance.new(40.47, 73.58) }
29
- assert_raise(ArgumentError){ GIS::Distance.new(40.47, 73.58, 34.3) }
30
- end
31
-
32
- def test_distance_expected_range_errors
33
- assert_raise(GIS::Distance::Error){ GIS::Distance.new(91.0, 100.0, 45.0, 45.0) }
34
- assert_raise(GIS::Distance::Error){ GIS::Distance.new(90.0, 190.0, 45.0, 45.0) }
35
- end
36
-
37
- def test_radius_basic_functionality
38
- assert_respond_to(@gis, :radius)
39
- assert_nothing_raised{ @gis.radius }
40
- assert_kind_of(Float, @gis.radius)
41
- end
42
-
43
- def test_default_radius
44
- assert_equal(6367.45, @gis.radius)
45
- end
46
-
47
- def test_radius_expected_errors
48
- assert_raise(ArgumentError){ @gis.radius(1) }
49
- end
50
-
51
- def test_radius_setter_basic_functionality
52
- assert_respond_to(@gis, :radius=)
53
- assert_nothing_raised{ @gis.radius = 6368.0 }
54
- assert_equal(6368.0, @gis.radius)
55
- end
56
-
57
- def test_radius_setter_expected_errors
58
- assert_raise(GIS::Distance::Error){ @gis.radius = 6200 }
59
- assert_raise(GIS::Distance::Error){ @gis.radius = 6400 }
60
- end
61
-
62
- def test_formula_basic_functionality
63
- assert_respond_to(@gis, :formula)
64
- assert_nothing_raised{ @gis.formula }
65
- assert_kind_of(String, @gis.formula)
66
- end
67
-
68
- def test_formula
69
- assert_equal('haversine', @gis.formula)
70
- end
71
-
72
- def test_formula_setter_basic_functionality
73
- assert_respond_to(@gis, :formula=)
74
- assert_nothing_raised{ @gis.formula = 'haversine' }
75
- end
76
-
77
- def test_formula_expected_errors
78
- assert_raise(ArgumentError){ @gis.formula(1) }
79
- assert_raise(GIS::Distance::Error){ @gis.formula = 'foo' }
80
- end
81
-
82
- def test_mi_basic_functionality
83
- assert_respond_to(@gis.distance, :mi)
84
- assert_nothing_raised{ @gis.distance.mi }
85
- assert_kind_of(Float, @gis.distance.mi)
86
- end
87
-
88
- def test_mi
89
- assert(@gis.distance > @gis.distance.mi)
90
- end
91
-
92
- def test_mi_expected_errors
93
- assert_raise(ArgumentError){ @gis.distance.mi(1) }
94
- end
95
-
96
- def teardown
97
- @gis = nil
98
- end
99
- end