touchpass 0.0.8.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.
@@ -0,0 +1,283 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Proximity" do
4
+
5
+ context "using apple store sydney and mecca espresso in king street sydney" do
6
+ it "should be proximate for STREET resolution" do
7
+ prp1 = Touchpass::Proximity::PRP.new(:address => apple_store_sydney, :resolution => "STREET")
8
+ prp2 = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st, :resolution => "STREET")
9
+ prp1.proximate?(prp2).should be_true
10
+ end
11
+
12
+ it "should be proximate for LOCAL resolution" do
13
+ prp1 = Touchpass::Proximity::PRP.new(:address => "367 George Street Sydney 2000 NSW Australia", :resolution => "LOCAL")
14
+ prp2 = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st, :resolution => "LOCAL")
15
+ prp1.proximate?(prp2).should be_true
16
+ end
17
+
18
+ it "should be proximate for METRO resolution" do
19
+ prp1 = Touchpass::Proximity::PRP.new(:address => "367 George Street Sydney 2000 NSW Australia", :resolution => "METRO")
20
+ prp2 = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st, :resolution => "METRO")
21
+ prp1.proximate?(prp2).should be_true
22
+ end
23
+
24
+ it "should be proximate for REGIONAL resolution" do
25
+ prp1 = Touchpass::Proximity::PRP.new(:address => "367 George Street Sydney 2000 NSW Australia", :resolution => "REGIONAL")
26
+ prp2 = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st, :resolution => "REGIONAL")
27
+ prp1.proximate?(prp2).should be_true
28
+ end
29
+ end
30
+
31
+ context "using 10 holdsworth st neutral bay and 92 pacific hwy north sydney" do
32
+ it "should not be proximate for STREET resolution" do
33
+ prp1 = Touchpass::Proximity::PRP.new(:address => holdsworth_st_neutralbay, :resolution => "STREET")
34
+ prp2 = Touchpass::Proximity::PRP.new(:address => north_sydney_post_office, :resolution => "STREET")
35
+ prp1.proximate?(prp2).should be_false
36
+ end
37
+
38
+ it "should be proximate for LOCAL resolution" do
39
+ prp1 = Touchpass::Proximity::PRP.new(:address => holdsworth_st_neutralbay, :resolution => "LOCAL")
40
+ prp2 = Touchpass::Proximity::PRP.new(:address => north_sydney_post_office, :resolution => "LOCAL")
41
+ prp1.proximate?(prp2).should be_true
42
+ end
43
+
44
+ it "should be proximate for METRO resolution" do
45
+ prp1 = Touchpass::Proximity::PRP.new(:address => holdsworth_st_neutralbay, :resolution => "METRO")
46
+ prp2 = Touchpass::Proximity::PRP.new(:address => north_sydney_post_office, :resolution => "METRO")
47
+ prp1.proximate?(prp2).should be_true
48
+ end
49
+
50
+ it "should be proximate for REGIONAL resolution" do
51
+ prp1 = Touchpass::Proximity::PRP.new(:address => holdsworth_st_neutralbay, :resolution => "REGIONAL")
52
+ prp2 = Touchpass::Proximity::PRP.new(:address => north_sydney_post_office, :resolution => "REGIONAL")
53
+ prp1.proximate?(prp2).should be_true
54
+ end
55
+ end
56
+
57
+ context "using 127 talga rd rothbury and cessnock post office" do
58
+ it "should not be proximate for STREET resolution" do
59
+ prp1 = Touchpass::Proximity::PRP.new(:address => talga_rd_rothbury, :resolution => "STREET")
60
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "STREET")
61
+ prp1.proximate?(prp2).should be_false
62
+ end
63
+
64
+ it "should not be proximate for LOCAL resolution" do
65
+ prp1 = Touchpass::Proximity::PRP.new(:address => talga_rd_rothbury, :resolution => "LOCAL")
66
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "LOCAL")
67
+ prp1.proximate?(prp2).should be_false
68
+ end
69
+
70
+ it "should be proximate for METRO resolution" do
71
+ prp1 = Touchpass::Proximity::PRP.new(:address => talga_rd_rothbury, :resolution => "METRO")
72
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "METRO")
73
+ prp1.proximate?(prp2).should be_true
74
+ end
75
+
76
+ it "should be proximate for REGIONAL resolution" do
77
+ prp1 = Touchpass::Proximity::PRP.new(:address => talga_rd_rothbury, :resolution => "REGIONAL")
78
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "REGIONAL")
79
+ prp1.proximate?(prp2).should be_true
80
+ end
81
+ end
82
+
83
+ context "using orbitec office in sydney and cessnock post office" do
84
+ it "should not be proximate for STREET resolution" do
85
+ prp1 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "STREET")
86
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "STREET")
87
+ prp1.proximate?(prp2).should be_false
88
+ end
89
+
90
+ it "should not be proximate for LOCAL resolution" do
91
+ prp1 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "LOCAL")
92
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "LOCAL")
93
+ prp1.proximate?(prp2).should be_false
94
+ end
95
+
96
+ it "should not be proximate for METRO resolution" do
97
+ prp1 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "METRO")
98
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "METRO")
99
+ prp1.proximate?(prp2).should be_false
100
+ end
101
+
102
+ it "should be proximate for REGIONAL resolution" do
103
+ prp1 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "REGIONAL")
104
+ prp2 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office, :resolution => "REGIONAL")
105
+ prp1.proximate?(prp2).should be_true
106
+ end
107
+ end
108
+
109
+ context "using empire state building new york and orbitec office in sydney" do
110
+ it "should not be proximate for STREET resolution" do
111
+ prp1 = Touchpass::Proximity::PRP.new(:address => empire_state_building, :resolution => "STREET")
112
+ prp2 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "STREET")
113
+ prp1.proximate?(prp2).should be_false
114
+ end
115
+
116
+ it "should not be proximate for LOCAL resolution" do
117
+ prp1 = Touchpass::Proximity::PRP.new(:address => empire_state_building, :resolution => "LOCAL")
118
+ prp2 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "LOCAL")
119
+ prp1.proximate?(prp2).should be_false
120
+ end
121
+
122
+ it "should not be proximate for METRO resolution" do
123
+ prp1 = Touchpass::Proximity::PRP.new(:address => empire_state_building, :resolution => "METRO")
124
+ prp2 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "METRO")
125
+ prp1.proximate?(prp2).should be_false
126
+ end
127
+
128
+ it "should not be proximate for REGIONAL resolution" do
129
+ prp1 = Touchpass::Proximity::PRP.new(:address => empire_state_building, :resolution => "REGIONAL")
130
+ prp2 = Touchpass::Proximity::PRP.new(:address => orbitec_office, :resolution => "REGIONAL")
131
+ prp1.proximate?(prp2).should be_false
132
+ end
133
+ end
134
+
135
+
136
+ context "using corner cases with LOCAL resolution" do
137
+
138
+ context "using geographic coordinates around the equator" do
139
+
140
+ it "north of equator (#{north_of_equator[:lat]}, #{north_of_equator[:lng]}) should be proximate to south of equator (#{south_of_equator[:lat]}, #{south_of_equator[:lng]})" do
141
+ prp = Touchpass::Proximity::PRP.new(north_of_equator)
142
+ prp2 = Touchpass::Proximity::PRP.new(south_of_equator)
143
+ prp.proximate?(prp2).should be_true
144
+ end
145
+
146
+ it "north of equator (#{north_of_equator[:lat]}, #{north_of_equator[:lng]}) should be proximate to south of equator (#{south_of_equator[:lat]}, #{south_of_equator[:lng]})" do
147
+ prp = Touchpass::Proximity::PRP.new(north_of_equator)
148
+ prp2 = Touchpass::Proximity::PRP.new(south_of_equator)
149
+ prp.proximate?(prp2).should be_true
150
+ end
151
+
152
+ it "north of equator (#{north_of_equator[:lat]}, #{north_of_equator[:lng]}) should be proximate to somewhere also in north of equator (#{north_of_equator[:lat]+0.1}, #{north_of_equator[:lng]+0.1})" do
153
+ prp = Touchpass::Proximity::PRP.new(north_of_equator)
154
+ prp2 = Touchpass::Proximity::PRP.new(:lat => north_of_equator[:lat]+0.1, :lng => north_of_equator[:lng]+0.1)
155
+ prp.proximate?(prp2).should be_true
156
+ end
157
+
158
+ it "south of equator (#{south_of_equator[:lat]}, #{south_of_equator[:lng]}) should be proximate to somewhere also in south of equator (#{south_of_equator[:lat]-0.1}, #{south_of_equator[:lng]-0.1})" do
159
+ prp = Touchpass::Proximity::PRP.new(south_of_equator)
160
+ prp2 = Touchpass::Proximity::PRP.new(:lat => south_of_equator[:lat]-0.1, :lng => south_of_equator[:lng]-0.1)
161
+ prp.proximate?(prp2).should be_true
162
+ end
163
+
164
+ it "east of gmt (#{east_of_gmt[:lat]}, #{east_of_gmt[:lng]}) should be proximate to west of gmt (#{west_of_gmt[:lat]}, #{west_of_gmt[:lng]})" do
165
+ prp = Touchpass::Proximity::PRP.new(east_of_gmt)
166
+ prp2 = Touchpass::Proximity::PRP.new(west_of_gmt)
167
+ prp.proximate?(prp2).should be_true
168
+ end
169
+
170
+ it "east of gmt (#{east_of_gmt[:lat]}, #{east_of_gmt[:lng]}) should be proximate to somewhere also in east of gmt (#{east_of_gmt[:lat]+0.1}, #{east_of_gmt[:lng]+0.1})" do
171
+ prp = Touchpass::Proximity::PRP.new(east_of_gmt)
172
+ prp2 = Touchpass::Proximity::PRP.new(:lat => east_of_gmt[:lat]+0.1, :lng => east_of_gmt[:lng]+0.1)
173
+ prp.proximate?(prp2).should be_true
174
+ end
175
+
176
+ it "west of gmt (#{west_of_gmt[:lat]}, #{west_of_gmt[:lng]}) should be proximate to somewhere also in west of gmt (#{west_of_gmt[:lat]-0.1}, #{west_of_gmt[:lng]-0.1})" do
177
+ prp = Touchpass::Proximity::PRP.new(west_of_gmt)
178
+ prp2 = Touchpass::Proximity::PRP.new(:lat => west_of_gmt[:lat]-0.1, :lng => west_of_gmt[:lng]-0.1)
179
+ prp.proximate?(prp2).should be_true
180
+ end
181
+
182
+ it "north west of equator and gmt (#{north_west_of_equator_and_gmt[:lat]}, #{north_west_of_equator_and_gmt[:lng]}) should be proximate to north east of equator and gmt (#{north_east_of_equator_and_gmt[:lat]}, #{north_east_of_equator_and_gmt[:lng]})" do
183
+ prp = Touchpass::Proximity::PRP.new(north_west_of_equator_and_gmt)
184
+ prp2 = Touchpass::Proximity::PRP.new(north_east_of_equator_and_gmt)
185
+ prp.proximate?(prp2).should be_true
186
+ end
187
+
188
+ it "north east of equator and gmt (#{north_east_of_equator_and_gmt[:lat]}, #{north_east_of_equator_and_gmt[:lng]}) should be proximate to south east of equator and gmt (#{south_east_of_equator_and_gmt[:lat]}, #{south_east_of_equator_and_gmt[:lng]})" do
189
+ prp = Touchpass::Proximity::PRP.new(north_east_of_equator_and_gmt)
190
+ prp2 = Touchpass::Proximity::PRP.new(south_east_of_equator_and_gmt)
191
+ prp.proximate?(prp2).should be_true
192
+ end
193
+
194
+ it "south east of equator and gmt (#{south_east_of_equator_and_gmt[:lat]}, #{south_east_of_equator_and_gmt[:lng]}) should be proximate to south west of equator and gmt (#{south_west_of_equator_and_gmt[:lat]}, #{south_west_of_equator_and_gmt[:lng]})" do
195
+ prp = Touchpass::Proximity::PRP.new(south_east_of_equator_and_gmt)
196
+ prp2 = Touchpass::Proximity::PRP.new(south_west_of_equator_and_gmt)
197
+ prp.proximate?(prp2).should be_true
198
+ end
199
+
200
+ it "south west of equator and gmt (#{south_west_of_equator_and_gmt[:lat]}, #{south_west_of_equator_and_gmt[:lng]}) should be proximate to north west of equator and gmt (#{north_west_of_equator_and_gmt[:lat]}, #{north_west_of_equator_and_gmt[:lng]})" do
201
+ prp = Touchpass::Proximity::PRP.new(south_west_of_equator_and_gmt)
202
+ prp2 = Touchpass::Proximity::PRP.new(north_west_of_equator_and_gmt)
203
+ prp.proximate?(prp2).should be_true
204
+ end
205
+
206
+ it "north west of equator and gmt (#{north_west_of_equator_and_gmt[:lat]}, #{north_west_of_equator_and_gmt[:lng]}) should be proximate to south east of equator and gmt (#{south_east_of_equator_and_gmt[:lat]}, #{south_east_of_equator_and_gmt[:lng]})" do
207
+ prp = Touchpass::Proximity::PRP.new(north_west_of_equator_and_gmt)
208
+ prp2 = Touchpass::Proximity::PRP.new(south_east_of_equator_and_gmt)
209
+ prp.proximate?(prp2).should be_true
210
+ end
211
+
212
+ it "north east of equator and gmt (#{north_east_of_equator_and_gmt[:lat]}, #{north_east_of_equator_and_gmt[:lng]}) should be proximate to south west of equator and gmt (#{south_west_of_equator_and_gmt[:lat]}, #{south_west_of_equator_and_gmt[:lng]})" do
213
+ prp = Touchpass::Proximity::PRP.new(north_east_of_equator_and_gmt)
214
+ prp2 = Touchpass::Proximity::PRP.new(south_west_of_equator_and_gmt)
215
+ prp.proximate?(prp2).should be_true
216
+ end
217
+
218
+ it "north of equator (#{north_of_equator[:lat]}, #{north_of_equator[:lng]}) should be proximate to south west of equator and gmt (#{south_west_of_equator_and_gmt[:lat]}, #{south_west_of_equator_and_gmt[:lng]})" do
219
+ prp = Touchpass::Proximity::PRP.new(north_of_equator)
220
+ prp2 = Touchpass::Proximity::PRP.new(south_west_of_equator_and_gmt)
221
+ prp.proximate?(prp2).should be_true
222
+ end
223
+ end
224
+
225
+ context "using more corner cases" do
226
+
227
+ it "should be proximate around (#{cornercase1[:lat]}, #{cornercase1[:lng]})" do
228
+ cc1 = Touchpass::Proximity::PRP.new(cornercase1)
229
+ cc1a = Touchpass::Proximity::PRP.new(:lat => cornercase1[:lat]+0.005, :lng => cornercase1[:lng]+0.005 )
230
+ cc1b = Touchpass::Proximity::PRP.new(:lat => cornercase1[:lat]-0.005, :lng => cornercase1[:lng]+0.005 )
231
+ cc1c = Touchpass::Proximity::PRP.new(:lat => cornercase1[:lat]+0.005, :lng => cornercase1[:lng]-0.005 )
232
+ cc1d = Touchpass::Proximity::PRP.new(:lat => cornercase1[:lat]-0.005, :lng => cornercase1[:lng]-0.005 )
233
+
234
+ cc1.proximate?(cc1a).should be_true
235
+ cc1.proximate?(cc1b).should be_true
236
+ cc1.proximate?(cc1c).should be_true
237
+ cc1.proximate?(cc1d).should be_true
238
+ end
239
+
240
+ it "should be proximate around (#{cornercase2[:lat]}, #{cornercase2[:lng]})" do
241
+ cc1 = Touchpass::Proximity::PRP.new(cornercase2)
242
+ cc1a = Touchpass::Proximity::PRP.new(:lat => cornercase2[:lat]+0.005, :lng => cornercase2[:lng]+0.005 )
243
+ cc1b = Touchpass::Proximity::PRP.new(:lat => cornercase2[:lat]-0.005, :lng => cornercase2[:lng]+0.005 )
244
+ cc1c = Touchpass::Proximity::PRP.new(:lat => cornercase2[:lat]+0.005, :lng => cornercase2[:lng]-0.005 )
245
+ cc1d = Touchpass::Proximity::PRP.new(:lat => cornercase2[:lat]-0.005, :lng => cornercase2[:lng]-0.005 )
246
+
247
+ cc1.proximate?(cc1a).should be_true
248
+ cc1.proximate?(cc1b).should be_true
249
+ cc1.proximate?(cc1c).should be_true
250
+ cc1.proximate?(cc1d).should be_true
251
+ end
252
+
253
+ it "should be proximate around (#{cornercase3[:lat]}, #{cornercase3[:lng]})" do
254
+ cc1 = Touchpass::Proximity::PRP.new(cornercase3)
255
+ cc1a = Touchpass::Proximity::PRP.new(:lat => cornercase3[:lat]+0.005, :lng => cornercase3[:lng]+0.005 )
256
+ cc1b = Touchpass::Proximity::PRP.new(:lat => cornercase3[:lat]-0.005, :lng => cornercase3[:lng]+0.005 )
257
+ cc1c = Touchpass::Proximity::PRP.new(:lat => cornercase3[:lat]+0.005, :lng => cornercase3[:lng]-0.005 )
258
+ cc1d = Touchpass::Proximity::PRP.new(:lat => cornercase3[:lat]-0.005, :lng => cornercase3[:lng]-0.005 )
259
+
260
+ cc1.proximate?(cc1a).should be_true
261
+ cc1.proximate?(cc1b).should be_true
262
+ cc1.proximate?(cc1c).should be_true
263
+ cc1.proximate?(cc1d).should be_true
264
+ end
265
+
266
+ it "should be proximate around (#{cornercase4[:lat]}, #{cornercase4[:lng]})" do
267
+ cc1 = Touchpass::Proximity::PRP.new(cornercase4)
268
+ cc1a = Touchpass::Proximity::PRP.new(:lat => cornercase4[:lat]+0.005, :lng => cornercase4[:lng]+0.005 )
269
+ cc1b = Touchpass::Proximity::PRP.new(:lat => cornercase4[:lat]-0.005, :lng => cornercase4[:lng]+0.005 )
270
+ cc1c = Touchpass::Proximity::PRP.new(:lat => cornercase4[:lat]+0.005, :lng => cornercase4[:lng]-0.005 )
271
+ cc1d = Touchpass::Proximity::PRP.new(:lat => cornercase4[:lat]-0.005, :lng => cornercase4[:lng]-0.005 )
272
+
273
+ cc1.proximate?(cc1a).should be_true
274
+ cc1.proximate?(cc1b).should be_true
275
+ cc1.proximate?(cc1c).should be_true
276
+ cc1.proximate?(cc1d).should be_true
277
+ end
278
+
279
+ end
280
+
281
+ end
282
+
283
+ end
data/spec/prp_spec.rb ADDED
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Touchpass::Proximity::PRP do
4
+
5
+ describe ".new" do
6
+
7
+ context "using mecca espresso king st sydney address" do
8
+
9
+ before do
10
+ @prp = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st)
11
+ end
12
+
13
+ it "should set the latitude and longitude" do
14
+ @prp.lat.should be
15
+ @prp.lng.should be
16
+ end
17
+
18
+ it "should generate the bounding box" do
19
+ @prp.bounding_box.should be
20
+ @prp.bounding_box.keys.size.should eql(4)
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ describe ".encrypt" do
28
+
29
+ context "using sha256 crypto provider" do
30
+
31
+ before do
32
+ @prp1 = Touchpass::Proximity::PRP.new(:address => apple_store_sydney)
33
+ @prp2 = Touchpass::Proximity::PRP.new(:address => mecca_espresso_king_st)
34
+ @prp3 = Touchpass::Proximity::PRP.new(:address => cessnock_post_office)
35
+ @prp4 = Touchpass::Proximity::PRP.new(:address => empire_state_building)
36
+ end
37
+
38
+ it "should generate 256 characters string" do
39
+ encrypted_prp = @prp1.encrypt(Touchpass::Crypt.salt)
40
+ encrypted_prp.size.should eql(256)
41
+
42
+ encrypted_prp = @prp2.encrypt(Touchpass::Crypt.salt)
43
+ encrypted_prp.size.should eql(256)
44
+
45
+ encrypted_prp = @prp3.encrypt(Touchpass::Crypt.salt)
46
+ encrypted_prp.size.should eql(256)
47
+
48
+ encrypted_prp = @prp4.encrypt(Touchpass::Crypt.salt)
49
+ encrypted_prp.size.should eql(256)
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ describe "#calibrate_lat" do
57
+
58
+ it "-0.0 should be calibrated to 0.0" do
59
+ Touchpass::Proximity::PRP.calibrate_lat(-0.00).should eql(0.0)
60
+ end
61
+
62
+ it "latitude should be within -90.0 and 90.0" do
63
+ Touchpass::Proximity::PRP.calibrate_lat(0.00).should be >= Touchpass::Proximity::PRP::MIN_LAT and be <= Touchpass::Proximity::PRP::MAX_LAT
64
+ Touchpass::Proximity::PRP.calibrate_lat(45.00).should be >= Touchpass::Proximity::PRP::MIN_LAT and be <= Touchpass::Proximity::PRP::MAX_LAT
65
+ Touchpass::Proximity::PRP.calibrate_lat(90.05).should be >= Touchpass::Proximity::PRP::MIN_LAT and be <= Touchpass::Proximity::PRP::MAX_LAT
66
+ Touchpass::Proximity::PRP.calibrate_lat(-90.05).should be >= Touchpass::Proximity::PRP::MIN_LAT and be <= Touchpass::Proximity::PRP::MAX_LAT
67
+ end
68
+
69
+ end
70
+
71
+ describe "#calibrate_lng" do
72
+
73
+ it "-0.0 should be calibrated to 0.0" do
74
+ Touchpass::Proximity::PRP.calibrate_lng(-0.00).should eql(0.0)
75
+ end
76
+
77
+ it "longitude should be within -180.0 and 180.0" do
78
+ Touchpass::Proximity::PRP.calibrate_lng(0.00).should be >= Touchpass::Proximity::PRP::MIN_LNG and be <= Touchpass::Proximity::PRP::MAX_LNG
79
+ Touchpass::Proximity::PRP.calibrate_lng(100.00).should be >= Touchpass::Proximity::PRP::MIN_LNG and be <= Touchpass::Proximity::PRP::MAX_LNG
80
+ Touchpass::Proximity::PRP.calibrate_lng(180.05).should be >= Touchpass::Proximity::PRP::MIN_LNG and be <= Touchpass::Proximity::PRP::MAX_LNG
81
+ Touchpass::Proximity::PRP.calibrate_lng(-180.05).should be >= Touchpass::Proximity::PRP::MIN_LNG and be <= Touchpass::Proximity::PRP::MAX_LNG
82
+ end
83
+
84
+ end
85
+
86
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Resolution" do
4
+
5
+ before(:each) do
6
+ #coord = -33.868297, 151.2035896
7
+ Geocoder.stub(:coordinates).and_return([-33.868297, 151.2035896])
8
+ end
9
+
10
+ [orbitec_office, north_of_equator].each do |point|
11
+
12
+ context point.is_a?(String) ? "using address '#{point}'" : "using lat: #{point[:lat]}, lng: #{point[:lng]}" do
13
+
14
+ [["STREET", 3], ["LOCAL", 2], ["METRO", 1], ["REGIONAL", 0]].each do |resolution, decimal_places|
15
+
16
+ context "using #{resolution} resolution" do
17
+
18
+ it "should have #{decimal_places} decimal places coordinates" do
19
+ if point.is_a? String
20
+ prp = Touchpass::Proximity::PRP.new :address => point, :resolution => resolution
21
+ else
22
+ prp = Touchpass::Proximity::PRP.new :lat => point[:lat], :lng => point[:lng], :resolution => resolution
23
+ end
24
+ prp.resolution.should eql(eval("Touchpass::Proximity::PRP::BBoxResolution::#{resolution.upcase}"))
25
+
26
+ lat = Touchpass::Proximity::PRP.format_decimal(prp.lat, Touchpass::Proximity::PRP.truncate_size(prp.resolution))
27
+ lng = Touchpass::Proximity::PRP.format_decimal(prp.lng, Touchpass::Proximity::PRP.truncate_size(prp.resolution))
28
+ case resolution
29
+ when 'REGIONAL'
30
+ lat.to_s.split(".").size.should eql(1)
31
+ lng.to_s.split(".").size.should eql(1)
32
+ else
33
+ lat.to_s.split(".").last.size.should eql(Touchpass::Proximity::PRP.truncate_size(prp.resolution))
34
+ lng.to_s.split(".").last.size.should eql(Touchpass::Proximity::PRP.truncate_size(prp.resolution))
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,24 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ SPEC_KEYS_PATH = File.join(ENV['HOME'], ".touchpass", "certs_spec")
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+
15
+ config.before(:suite) do
16
+ # use a different directory for spec keys
17
+ Touchpass::KeyFileCreator.keys_path = SPEC_KEYS_PATH
18
+ FileUtils::rm_rf(SPEC_KEYS_PATH)
19
+ end
20
+
21
+ end
22
+
23
+ require 'helpers/gtp_spec_helper'
24
+ require 'helpers/client_spec_helper'