random_point_generator 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 921bc3b41e1b1cf8ef722375ac80bf6f8435c0c1
4
- data.tar.gz: 81101d0087d66b407aeb5db865bf40c20aad9267
3
+ metadata.gz: 2b9067450b27cb5fc90247a50bba38e6abf544cf
4
+ data.tar.gz: b359ed1859fc41c874fc0ba7745406ed0303bfcc
5
5
  SHA512:
6
- metadata.gz: 898b5efd7a4b5b4fc4edd777c1d262ce8a6046db9993d3399aeb64c78d01c8e0e6ab46ddc416093e2657a8676998b6c8ec3591abfb528ffbaae3ed12aef56422
7
- data.tar.gz: a5b3b1423168b1acfe99aaeb777712acaa0706dc53dc1bdde873e726307419a85771d4841e3f9d28bddefde31b035a5ae18dad5877dea056fd73ef4fd733d8b8
6
+ metadata.gz: 426974b18e96b759bdc3fc3f85528ce94eb208f83cbf1c719ca211ef0d85b131461d4710a9dcb5c2ca8ca9114b4bb5e005762832fc87445dd2210fdb35d58045
7
+ data.tar.gz: f5c8236a84c7e8bca633c5607df42238be3160281d6a810bb79a37a4f86de69d085894fcd5d7d1c9e0923ff0da09208db7ce5db1a5a6d107873d637381a91249
@@ -1,5 +1,8 @@
1
1
  class RandomPointGenerator
2
- def initialize(sw_point = [-90.0, -180.0], ne_point = [90.0, 180.0])
2
+ def initialize(sw_point = nil, ne_point = nil)
3
+ sw_point ||= [-90.0, -180.0]
4
+ ne_point ||= [90.0, 180.0]
5
+
3
6
  @sw_point = sw_point
4
7
  @ne_point = ne_point
5
8
  end
@@ -1,6 +1,24 @@
1
1
  require 'random_point_generator'
2
2
 
3
3
  describe RandomPointGenerator do
4
+ shared_examples "generates a valid, random point" do
5
+ it "generates a point" do
6
+ expect(subject).to be_an Array
7
+ end
8
+
9
+ it "gives a valid, random latitude" do
10
+ lat = random_point[0]
11
+ expect(lat).to be >= expected_lower_lat_bound
12
+ expect(lat).to be <= expected_upper_lat_bound
13
+ end
14
+
15
+ it "gives a valid, random longitude" do
16
+ lng = random_point[1]
17
+ expect(lng).to be >= expected_lower_lng_bound
18
+ expect(lng).to be <= expected_upper_lng_bound
19
+ end
20
+ end
21
+
4
22
  describe "with no bounding box" do
5
23
  let(:generator) { described_class.new }
6
24
  subject { generator }
@@ -9,59 +27,96 @@ describe RandomPointGenerator do
9
27
  let(:random_point) { generator.random_point }
10
28
  subject { random_point }
11
29
 
12
- it "generates a point" do
13
- expect(subject).to be_an Array
14
- end
30
+ let(:expected_lower_lat_bound) { -90.0 }
31
+ let(:expected_upper_lat_bound) { 90.0 }
15
32
 
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
33
+ let(:expected_lower_lng_bound) { -180.0 }
34
+ let(:expected_upper_lng_bound) { 180.0 }
21
35
 
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
36
+ include_examples "generates a valid, random point"
27
37
  end
28
38
  end
29
39
 
30
40
  describe "with a bounding box" do
31
- let(:sw_lat) { 5.0 }
32
- let(:sw_lng) { 50.0 }
41
+ describe "with both sw_point and ne_point" do
42
+ let(:sw_lat) { 5.0 }
43
+ let(:sw_lng) { 50.0 }
33
44
 
34
- let(:sw_point) { [sw_lat, sw_lng] }
45
+ let(:sw_point) { [sw_lat, sw_lng] }
35
46
 
36
- let(:ne_lat) { 53.4 }
37
- let(:ne_lng) { 54.87 }
47
+ let(:ne_lat) { 53.4 }
48
+ let(:ne_lng) { 54.87 }
38
49
 
39
- let(:ne_point) { [ne_lat, ne_lng] }
50
+ let(:ne_point) { [ne_lat, ne_lng] }
40
51
 
41
- let(:generator) { described_class.new(sw_point, ne_point) }
42
- subject { generator }
52
+ let(:generator) { described_class.new(sw_point, ne_point) }
53
+ subject { generator }
43
54
 
44
- describe "#random_point" do
45
- let(:random_point) { generator.random_point }
46
- subject { random_point }
55
+ describe "#random_point" do
56
+ let(:random_point) { generator.random_point }
57
+ subject { random_point }
47
58
 
48
- it "generates a point" do
49
- expect(subject).to be_an Array
50
- end
59
+ let(:expected_lower_lat_bound) { sw_lat }
60
+ let(:expected_upper_lat_bound) { ne_lat }
61
+
62
+ let(:expected_lower_lng_bound) { sw_lng }
63
+ let(:expected_upper_lng_bound) { ne_lng }
51
64
 
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
65
+ include_examples "generates a valid, random point"
56
66
  end
67
+ end
68
+
69
+ describe "with valid sw_point and nil ne_point" do
70
+ let(:sw_lat) { 5.0 }
71
+ let(:sw_lng) { 50.0 }
57
72
 
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
73
+ let(:sw_point) { [sw_lat, sw_lng] }
74
+
75
+
76
+ let(:ne_point) { nil }
77
+
78
+ let(:generator) { described_class.new(sw_point, ne_point) }
79
+ subject { generator }
80
+
81
+ describe "#random_point" do
82
+ let(:random_point) { generator.random_point }
83
+ subject { random_point }
84
+
85
+ let(:expected_lower_lat_bound) { sw_lat }
86
+ let(:expected_upper_lat_bound) { 90.0 }
87
+
88
+ let(:expected_lower_lng_bound) { sw_lng }
89
+ let(:expected_upper_lng_bound) { 180.0 }
90
+
91
+ include_examples "generates a valid, random point"
62
92
  end
63
93
  end
64
94
 
95
+ describe "with nil sw_point and nil ne_point" do
96
+
97
+ let(:sw_point) { nil }
98
+
99
+ let(:ne_lat) { 53.4 }
100
+ let(:ne_lng) { 54.87 }
101
+
102
+ let(:ne_point) { [ne_lat, ne_lng] }
103
+
104
+ let(:generator) { described_class.new(sw_point, ne_point) }
105
+ subject { generator }
106
+
107
+ describe "#random_point" do
108
+ let(:random_point) { generator.random_point }
109
+ subject { random_point }
110
+
111
+ let(:expected_lower_lat_bound) { -90.0 }
112
+ let(:expected_upper_lat_bound) { ne_lat }
113
+
114
+ let(:expected_lower_lng_bound) { -180.0 }
115
+ let(:expected_upper_lng_bound) { ne_lng }
116
+
117
+ include_examples "generates a valid, random point"
118
+ end
119
+ end
65
120
  end
66
121
  end
67
122
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random_point_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Tolle
@@ -31,7 +31,8 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.0.0
33
33
  description:
34
- email: kyle@nullsix.com
34
+ email:
35
+ - kyle@nullsix.com
35
36
  executables: []
36
37
  extensions: []
37
38
  extra_rdoc_files: []