gis-distance 1.0.2 → 1.1.0

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