random_point_generator 0.0.1

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