random_point_generator 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 921bc3b41e1b1cf8ef722375ac80bf6f8435c0c1
4
+ data.tar.gz: 81101d0087d66b407aeb5db865bf40c20aad9267
5
+ SHA512:
6
+ metadata.gz: 898b5efd7a4b5b4fc4edd777c1d262ce8a6046db9993d3399aeb64c78d01c8e0e6ab46ddc416093e2657a8676998b6c8ec3591abfb528ffbaae3ed12aef56422
7
+ data.tar.gz: a5b3b1423168b1acfe99aaeb777712acaa0706dc53dc1bdde873e726307419a85771d4841e3f9d28bddefde31b035a5ae18dad5877dea056fd73ef4fd733d8b8
@@ -0,0 +1,31 @@
1
+ class RandomPointGenerator
2
+ def initialize(sw_point = [-90.0, -180.0], ne_point = [90.0, 180.0])
3
+ @sw_point = sw_point
4
+ @ne_point = ne_point
5
+ end
6
+
7
+ def random_point
8
+ y_range = (sw_lat .. ne_lat)
9
+ x_range = (sw_lng .. ne_lng)
10
+
11
+ [rand(y_range), rand(x_range)]
12
+ end
13
+
14
+ private
15
+ def sw_lat
16
+ @sw_point[0]
17
+ end
18
+
19
+ def sw_lng
20
+ @sw_point[1]
21
+ end
22
+
23
+ def ne_lat
24
+ @ne_point[0]
25
+ end
26
+
27
+ def ne_lng
28
+ @ne_point[1]
29
+ end
30
+ end
31
+
@@ -0,0 +1,67 @@
1
+ require 'random_point_generator'
2
+
3
+ describe RandomPointGenerator do
4
+ describe "with no bounding box" do
5
+ let(:generator) { described_class.new }
6
+ subject { generator }
7
+
8
+ describe "#random_point" do
9
+ let(:random_point) { generator.random_point }
10
+ subject { random_point }
11
+
12
+ it "generates a point" do
13
+ expect(subject).to be_an Array
14
+ end
15
+
16
+ it "gives a valid, random latitude" do
17
+ lat = random_point[0]
18
+ expect(lat).to be >= -90.0
19
+ expect(lat).to be <= 90.0
20
+ end
21
+
22
+ it "gives a valid, random longitude" do
23
+ lng = random_point[1]
24
+ expect(lng).to be >= -180.0
25
+ expect(lng).to be <= 180.0
26
+ end
27
+ end
28
+ end
29
+
30
+ describe "with a bounding box" do
31
+ let(:sw_lat) { 5.0 }
32
+ let(:sw_lng) { 50.0 }
33
+
34
+ let(:sw_point) { [sw_lat, sw_lng] }
35
+
36
+ let(:ne_lat) { 53.4 }
37
+ let(:ne_lng) { 54.87 }
38
+
39
+ let(:ne_point) { [ne_lat, ne_lng] }
40
+
41
+ let(:generator) { described_class.new(sw_point, ne_point) }
42
+ subject { generator }
43
+
44
+ describe "#random_point" do
45
+ let(:random_point) { generator.random_point }
46
+ subject { random_point }
47
+
48
+ it "generates a point" do
49
+ expect(subject).to be_an Array
50
+ end
51
+
52
+ it "gives a valid, random latitude within the bounding box" do
53
+ lat = random_point[0]
54
+ expect(lat).to be >= sw_lat
55
+ expect(lat).to be <= ne_lat
56
+ end
57
+
58
+ it "gives a valid, random logitude within the bounding box" do
59
+ lng = random_point[1]
60
+ expect(lng).to be >= sw_lng
61
+ expect(lng).to be <= ne_lng
62
+ end
63
+ end
64
+
65
+ end
66
+ end
67
+
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: random_point_generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Tolle
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ description:
34
+ email: kyle@nullsix.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - lib/random_point_generator.rb
40
+ - spec/random_point_generator_spec.rb
41
+ homepage: https://github.com/kyletolle/random_point_generator
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.2.2
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Generates random map points, within an optional bounding box.
65
+ test_files: []