bubble-wrap 1.8.0 → 1.9.0

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +14 -9
  3. data/CHANGELOG.md +21 -2
  4. data/Gemfile.lock +8 -5
  5. data/README.md +54 -3
  6. data/Rakefile +7 -1
  7. data/lib/bubble-wrap/camera.rb +1 -1
  8. data/lib/bubble-wrap/core.rb +1 -1
  9. data/lib/bubble-wrap/font.rb +1 -1
  10. data/lib/bubble-wrap/loader.rb +4 -4
  11. data/lib/bubble-wrap/media.rb +1 -1
  12. data/lib/bubble-wrap/motion.rb +7 -1
  13. data/lib/bubble-wrap/version.rb +2 -2
  14. data/motion/core/app.rb +4 -0
  15. data/motion/core/device/ios/camera_wrapper.rb +1 -1
  16. data/motion/core/device/ios/screen.rb +2 -2
  17. data/motion/core/device/osx/screen.rb +1 -1
  18. data/motion/core/device/screen.rb +1 -1
  19. data/motion/core/ios/device.rb +1 -1
  20. data/motion/core/ios/ns_index_path.rb +11 -0
  21. data/motion/core/json.rb +2 -2
  22. data/motion/core/kvo.rb +118 -55
  23. data/motion/core/ns_notification_center.rb +2 -2
  24. data/motion/core/ns_url_request.rb +2 -2
  25. data/motion/core/osx/device.rb +1 -1
  26. data/motion/core/string.rb +7 -7
  27. data/motion/font/font.rb +1 -1
  28. data/motion/ios/8/location_constants.rb +21 -0
  29. data/motion/location/location.rb +38 -18
  30. data/motion/mail/result.rb +1 -1
  31. data/motion/media/media.rb +1 -1
  32. data/motion/motion/accelerometer.rb +55 -0
  33. data/motion/motion/device_motion.rb +139 -0
  34. data/motion/motion/gyroscope.rb +55 -0
  35. data/motion/motion/magnetometer.rb +55 -0
  36. data/motion/motion/motion.rb +0 -288
  37. data/motion/reactor.rb +3 -3
  38. data/motion/reactor/deferrable.rb +32 -32
  39. data/motion/reactor/periodic_timer.rb +1 -1
  40. data/motion/reactor/queue.rb +6 -6
  41. data/motion/reactor/thread_aware_deferrable.rb +1 -1
  42. data/motion/reactor/timer.rb +1 -1
  43. data/motion/rss_parser.rb +6 -3
  44. data/motion/shortcut.rb +1 -1
  45. data/motion/sms/result.rb +1 -1
  46. data/motion/test_suite_delegate.rb +1 -1
  47. data/motion/ui/ui_activity_view_controller_wrapper.rb +6 -1
  48. data/motion/ui/ui_alert_view.rb +21 -1
  49. data/motion/util/deprecated.rb +1 -1
  50. data/samples/alert/Gemfile.lock +1 -1
  51. data/spec/lib/bubble-wrap/requirement_spec.rb +2 -2
  52. data/spec/lib/bubble-wrap_spec.rb +1 -1
  53. data/spec/lib/motion_stub.rb +1 -1
  54. data/spec/motion/core/app_spec.rb +6 -0
  55. data/spec/motion/core/device/osx/screen_spec.rb +1 -1
  56. data/spec/motion/core/ios/ns_index_path_spec.rb +20 -0
  57. data/spec/motion/core/kvo_spec.rb +171 -58
  58. data/spec/motion/core/ns_notification_center_spec.rb +3 -3
  59. data/spec/motion/core/string_spec.rb +16 -16
  60. data/spec/motion/core_spec.rb +3 -3
  61. data/spec/motion/font/font_spec.rb +1 -1
  62. data/spec/motion/location/location_spec.rb +61 -9
  63. data/spec/motion/mail/result_spec.rb +7 -7
  64. data/spec/motion/media/player_spec.rb +1 -1
  65. data/spec/motion/reactor/thread_aware_deferrable_spec.rb +3 -3
  66. data/spec/motion/sms/result_spec.rb +6 -6
  67. data/spec/motion/ui/ui_alert_view_spec.rb +59 -1
  68. data/spec/motion/util/deprecated_spec.rb +1 -1
  69. metadata +17 -4
  70. data/motion/ios/7/uiactivity_view_controller_constants.rb +0 -10
@@ -4,7 +4,7 @@ describe "NSNotificationCenter" do
4
4
  after do
5
5
  @observer = nil
6
6
  end
7
-
7
+
8
8
  after do
9
9
  BW::App.notification_center.unobserve(@observer) if @observer
10
10
  end
@@ -23,13 +23,13 @@ describe "NSNotificationCenter" do
23
23
  note.userInfo[:status].should == "ok"
24
24
  end
25
25
 
26
- lambda {
26
+ lambda {
27
27
  BW::App.notification_center.post SampleNotification, Time.now, {:status => "ok"}
28
28
  }.should.change { @notified }
29
29
  end
30
30
 
31
31
  it "remove observer" do
32
- lambda {
32
+ lambda {
33
33
  @observer = BW::App.notification_center.observe(SampleNotification) {}
34
34
  BW::App.notification_center.unobserve(@observer)
35
35
  }.should.not.change { BW::App.notification_center.observers.size }
@@ -40,7 +40,7 @@ describe BubbleWrap::String do
40
40
 
41
41
  describe 'camelCase input' do
42
42
  describe '.camelize(true)' do
43
- it "upper cases the first character" do
43
+ it "upper cases the first character" do
44
44
  'camelCase'.camelize(true).should == 'CamelCase'
45
45
  end
46
46
  end
@@ -113,19 +113,19 @@ describe BubbleWrap::String do
113
113
 
114
114
  it "with 6 digits" do
115
115
  @orange_color_from_hex= '#FF8A19'.to_color
116
- @orange_color_from_hex.should == @orange_color
117
- end
116
+ @orange_color_from_hex.should == @orange_color
117
+ end
118
118
 
119
- it "with 3 digits" do
119
+ it "with 3 digits" do
120
120
  @blue_color_from_hex = '#00F'.to_color
121
- @blue_color_from_hex.should == @blue_color
122
- end
121
+ @blue_color_from_hex.should == @blue_color
122
+ end
123
123
 
124
- it "with no # sign" do
124
+ it "with no # sign" do
125
125
  @orange_color_from_hex= 'FF8A19'.to_color
126
- @orange_color_from_hex.should == @orange_color
127
- end
128
- end
126
+ @orange_color_from_hex.should == @orange_color
127
+ end
128
+ end
129
129
 
130
130
  describe "a string with a color keyword (blue, red, lightText)" do
131
131
  it "should return the corresponding color" do
@@ -150,16 +150,16 @@ describe BubbleWrap::String do
150
150
  it "an invalid hex color" do
151
151
  should.raise( ArgumentError ) {
152
152
  'XXX'.to_color
153
- }
153
+ }
154
154
  end
155
-
155
+
156
156
  it "a hex color with the wrong number of digits" do
157
157
  should.raise( ArgumentError ) {
158
158
  'FFFF'.to_color
159
- }
159
+ }
160
160
  end
161
-
162
- end
161
+
162
+ end
163
163
 
164
164
  describe "encoding" do
165
165
 
@@ -214,7 +214,7 @@ describe BubbleWrap::String do
214
214
  utf8 = @raw_string.dataUsingEncoding NSUTF8StringEncoding
215
215
  @raw_string.to_encoded_data.should.equal utf8
216
216
  end
217
-
217
+
218
218
  it "handles multiple encodings" do
219
219
  utf16 = @raw_string.dataUsingEncoding NSUTF16StringEncoding
220
220
  @raw_string.to_encoded_data(NSUTF16StringEncoding).should.equal utf16
@@ -51,7 +51,7 @@ describe 'BubbleWrap' do
51
51
  end
52
52
 
53
53
  describe "Localized string" do
54
-
54
+
55
55
  it "loads the string from NSBundle" do
56
56
  key = 'real_key'
57
57
  value = 'Real Key'
@@ -66,11 +66,11 @@ describe 'BubbleWrap' do
66
66
  end
67
67
 
68
68
  end
69
-
69
+
70
70
  describe "uuid" do
71
71
 
72
72
  it "always creates the new UUID" do
73
- previous = BW.create_uuid
73
+ previous = BW.create_uuid
74
74
  10.times do
75
75
  uuid = BW.create_uuid
76
76
  uuid.should.not.equal previous
@@ -51,4 +51,4 @@ describe BubbleWrap::Font do
51
51
  }
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -93,11 +93,13 @@ describe BubbleWrap::Location do
93
93
  CLLocationManager.authorize(KCLAuthorizationStatusAuthorized)
94
94
  BW::Location.authorized?.should == true
95
95
 
96
- CLLocationManager.authorize(KCLAuthorizationStatusAuthorizedWhenInUse)
97
- BW::Location.authorized?.should == true
98
-
99
- CLLocationManager.authorize(KCLAuthorizationStatusAuthorizedAlways)
100
- BW::Location.authorized?.should == true
96
+ # if Device.ios_version.to_f >= 8.0
97
+ # CLLocationManager.authorize(KCLAuthorizationStatusAuthorizedWhenInUse)
98
+ # BW::Location.authorized?.should == true
99
+ #
100
+ # CLLocationManager.authorize(KCLAuthorizationStatusAuthorizedAlways)
101
+ # BW::Location.authorized?.should == true
102
+ # end
101
103
  end
102
104
 
103
105
  it "should throw error if not enabled" do
@@ -147,7 +149,7 @@ describe BubbleWrap::Location do
147
149
  result[:from].longitude.should == 49
148
150
  end
149
151
 
150
- BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
152
+ BW::Location.locationManager(location_manager, didUpdateLocations: [from, to])
151
153
  end
152
154
  end
153
155
 
@@ -163,11 +165,11 @@ describe BubbleWrap::Location do
163
165
  @number_times += 1
164
166
  end
165
167
 
166
- BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
168
+ BW::Location.locationManager(location_manager, didUpdateLocations: [from, to])
167
169
 
168
170
  to = CLLocation.alloc.initWithLatitude(0, longitude: 0)
169
171
  from = CLLocation.alloc.initWithLatitude(0, longitude: 0)
170
- BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
172
+ BW::Location.locationManager(location_manager, didUpdateLocations: [from, to])
171
173
  @number_times.should == 1
172
174
  end
173
175
  end
@@ -233,8 +235,58 @@ describe BubbleWrap::Location do
233
235
  result[:from].longitude.should == 49
234
236
  end
235
237
 
236
- BW::Location.locationManager(location_manager, didUpdateToLocation: to, fromLocation: from)
238
+ BW::Location.locationManager(location_manager, didUpdateLocations: [from, to])
239
+ end
240
+
241
+ it "should include previous locations" do
242
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 50)
243
+ from = CLLocation.alloc.initWithLatitude(100, longitude: 49)
244
+ previous = CLLocation.alloc.initWithLatitude(100, longitude: 48)
245
+
246
+ BW::Location.get_significant do |result|
247
+ result[:to].longitude.should == 50
248
+ result[:from].longitude.should == 49
249
+ result[:previous].last.longitude.should == 48
250
+ end
251
+
252
+ BW::Location.locationManager(location_manager, didUpdateLocations: [previous, from, to])
253
+ end
254
+
255
+ it "should preserve previous location when delegate method only returns current location" do
256
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 49)
257
+
258
+ @number_times = 0
259
+ BW::Location.get_significant do |result|
260
+ if @number_times == 0
261
+ result[:to].longitude.should == 49
262
+ result[:from].should == nil
263
+ result[:previous].last.should == nil
264
+ else
265
+ result[:to].longitude.should == 50
266
+ result[:from].longitude.should == 49
267
+ result[:previous].last.should == nil
268
+ end
269
+ @number_times += 1
270
+ end
271
+
272
+ BW::Location.locationManager(location_manager, didUpdateLocations: [to])
273
+
274
+ to = CLLocation.alloc.initWithLatitude(100, longitude: 50)
275
+ BW::Location.locationManager(location_manager, didUpdateLocations: [to])
276
+
277
+ @number_times.should == 2
278
+ end
279
+ end
280
+
281
+ describe ".start" do
282
+ before do
283
+ reset
284
+ end
285
+
286
+ it "should not throw an error starting when the Location Manager has not been initialized" do
287
+ Proc.new { BW::Location.start }.should.not.raise Exception
237
288
  end
289
+
238
290
  end
239
291
 
240
292
  describe ".stop" do
@@ -1,19 +1,19 @@
1
1
  describe BW::Mail::Result do
2
-
2
+
3
3
  before do
4
4
  @subject = BW::Mail::Result.new(MFMailComposeResultCancelled, nil)
5
5
  end
6
-
6
+
7
7
  it "should set sent? when sent" do
8
8
  @subject.result = MFMailComposeResultSent
9
9
  @subject.should.be.sent
10
10
  end
11
-
11
+
12
12
  it "should not set sent? when not sent" do
13
13
  @subject.result = MFMailComposeResultCancelled
14
14
  @subject.should.not.be.sent
15
15
  end
16
-
16
+
17
17
  it "should set canceled? when canceled" do
18
18
  @subject.result = MFMailComposeResultCancelled
19
19
  @subject.should.be.canceled
@@ -23,7 +23,7 @@ describe BW::Mail::Result do
23
23
  @subject.result = MFMailComposeResultSent
24
24
  @subject.should.not.be.canceled
25
25
  end
26
-
26
+
27
27
  it "should set saved? when saved" do
28
28
  @subject.result = MFMailComposeResultSaved
29
29
  @subject.should.be.saved
@@ -33,7 +33,7 @@ describe BW::Mail::Result do
33
33
  @subject.result = MFMailComposeResultFailed
34
34
  @subject.should.not.be.saved
35
35
  end
36
-
36
+
37
37
  it "should set failed? when failed" do
38
38
  @subject.result = MFMailComposeResultFailed
39
39
  @subject.should.be.failed
@@ -43,7 +43,7 @@ describe BW::Mail::Result do
43
43
  @subject.result = MFMailComposeResultSent
44
44
  @subject.should.not.be.failed
45
45
  end
46
-
46
+
47
47
  it "should set failed? when error" do
48
48
  @subject.result = MFMailComposeResultCancelled
49
49
  @subject.error = :errored
@@ -96,4 +96,4 @@ describe BubbleWrap::Media::Player do
96
96
  end
97
97
  end
98
98
  =end
99
- end
99
+ end
@@ -7,7 +7,7 @@ shared :queue_caching_deferrable_method do
7
7
  end
8
8
 
9
9
  it "stores the queue, even if its not the main" do
10
- @queue.async do
10
+ @queue.async do
11
11
  @subject.send(@method, &@blk)
12
12
  Dispatch::Queue.main.async { resume }
13
13
  end
@@ -21,7 +21,7 @@ end
21
21
 
22
22
  shared :queue_block_execution do
23
23
  it "calls the block on the right thread, with deferred argument once the deferrable is finished" do
24
- @queue.async do
24
+ @queue.async do
25
25
  @subject.send(@block_method) do |*args|
26
26
  Dispatch::Queue.current.to_s.should.equal @queue.to_s
27
27
  args.should.equal [true]
@@ -34,7 +34,7 @@ shared :queue_block_execution do
34
34
  end
35
35
 
36
36
  it "removes the queue from internal cache once the deferrable is finished" do
37
- @subject.send(@block_method) do |*args|
37
+ @subject.send(@block_method) do |*args|
38
38
  Dispatch::Queue.main.async { resume }
39
39
  end
40
40
  @subject.send(@status_method, true)
@@ -1,19 +1,19 @@
1
1
  describe BW::SMS::Result do
2
-
2
+
3
3
  before do
4
4
  @subject = BW::SMS::Result.new(MessageComposeResultCancelled)
5
5
  end
6
-
6
+
7
7
  it "should set sent? when sent" do
8
8
  @subject.result = MessageComposeResultSent
9
9
  @subject.should.be.sent
10
10
  end
11
-
11
+
12
12
  it "should not set sent? when not sent" do
13
13
  @subject.result = MessageComposeResultFailed
14
14
  @subject.should.not.be.sent
15
15
  end
16
-
16
+
17
17
  it "should set canceled? when canceled" do
18
18
  @subject.result = MessageComposeResultCancelled
19
19
  @subject.should.be.canceled
@@ -23,8 +23,8 @@ describe BW::SMS::Result do
23
23
  @subject.result = MessageComposeResultFailed
24
24
  @subject.should.not.be.canceled
25
25
  end
26
-
27
-
26
+
27
+
28
28
  it "should set failed? when failed" do
29
29
  @subject.result = MessageComposeResultFailed
30
30
  @subject.should.be.failed
@@ -185,6 +185,8 @@ describe BW::UIAlertView do
185
185
  :title => "title",
186
186
  :message => "message",
187
187
  :style => :plain_text_input,
188
+ :keyboard_type => UIKeyboardTypeURL,
189
+ :text => "text",
188
190
  :placeholder => "placeholder",
189
191
  :buttons => "button title",
190
192
  :cancel_button_index => 0,
@@ -313,6 +315,7 @@ describe BW::UIAlertView do
313
315
  :title => "title",
314
316
  :message => "message",
315
317
  :style => :plain_text_input,
318
+ :text => "text",
316
319
  :placeholder => "placeholder",
317
320
  :buttons => "button title",
318
321
  :cancel_button_index => 0,
@@ -409,6 +412,14 @@ describe BW::UIAlertView do
409
412
  @subject.plain_text_field.placeholder.should.be.nil
410
413
  end
411
414
 
415
+ it "has no text" do
416
+ @subject.plain_text_field.text.should == ""
417
+ end
418
+
419
+ it "has the default keyboard type" do
420
+ @subject.plain_text_field.keyboardType.should == UIKeyboardTypeDefault
421
+ end
422
+
412
423
  it "has no secure text field" do
413
424
  @subject.secure_text_field.should.be.nil
414
425
  end
@@ -426,7 +437,7 @@ describe BW::UIAlertView do
426
437
 
427
438
  describe "given a text placeholder" do
428
439
  before do
429
- @options = {placeholder: "placeholder"}
440
+ @options = { placeholder: "placeholder" }
430
441
  @subject = BW::UIAlertView.plain_text_input(@options)
431
442
  end
432
443
 
@@ -436,6 +447,50 @@ describe BW::UIAlertView do
436
447
  @subject.plain_text_field.placeholder.should == "placeholder"
437
448
  end
438
449
  end
450
+
451
+ ###############################################################################################
452
+
453
+ describe "given text" do
454
+ before do
455
+ @options = { text: "text" }
456
+ @subject = BW::UIAlertView.plain_text_input(@options)
457
+ end
458
+
459
+ behaves_like "an instance with no options"
460
+
461
+ it "has the correct text" do
462
+ @subject.plain_text_field.text.should == "text"
463
+ end
464
+ end
465
+
466
+ ###############################################################################################
467
+
468
+ describe "given a keyboard type" do
469
+ before do
470
+ @options = { keyboard_type: UIKeyboardTypeURL }
471
+ @subject = BW::UIAlertView.plain_text_input(@options)
472
+ end
473
+
474
+ behaves_like "an instance with no options"
475
+
476
+ it "has the correct keyboard type" do
477
+ @subject.plain_text_field.keyboardType.should == UIKeyboardTypeURL
478
+ end
479
+ end
480
+
481
+ describe "given a keyboard type as a symbol" do
482
+ before do
483
+ @options = { keyboard_type: :email_address }
484
+ @subject = BW::UIAlertView.plain_text_input(@options)
485
+ end
486
+
487
+ behaves_like "an instance with no options"
488
+
489
+ it "has the correct keyboard type" do
490
+ @subject.plain_text_field.keyboardType.should == UIKeyboardTypeEmailAddress
491
+ end
492
+ end
493
+
439
494
  ###############################################################################################
440
495
 
441
496
  describe "given no options with a block" do
@@ -474,6 +529,7 @@ describe BW::UIAlertView do
474
529
  :title => "title",
475
530
  :message => "message",
476
531
  :style => :default,
532
+ :text => "text",
477
533
  :placeholder => "placeholder",
478
534
  :buttons => "button title",
479
535
  :cancel_button_index => 0,
@@ -617,6 +673,7 @@ describe BW::UIAlertView do
617
673
  :title => "title",
618
674
  :message => "message",
619
675
  :style => :default,
676
+ :text => "text",
620
677
  :placeholder => "placeholder",
621
678
  :buttons => "button title",
622
679
  :cancel_button_index => 0,
@@ -760,6 +817,7 @@ describe BW::UIAlertView do
760
817
  :title => "title",
761
818
  :message => "message",
762
819
  :style => :default,
820
+ :text => "text",
763
821
  :placeholder => "placeholder",
764
822
  :buttons => "button title",
765
823
  :cancel_button_index => 0,