bubble-wrap 1.2.0 → 1.3.0.osx

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +4 -2
  3. data/Gemfile.lock +1 -1
  4. data/README.md +217 -7
  5. data/Rakefile +23 -2
  6. data/lib/bubble-wrap/camera.rb +10 -6
  7. data/lib/bubble-wrap/core.rb +14 -1
  8. data/lib/bubble-wrap/ext/motion_project_app.rb +8 -0
  9. data/lib/bubble-wrap/font.rb +3 -1
  10. data/lib/bubble-wrap/http.rb +2 -0
  11. data/lib/bubble-wrap/loader.rb +17 -2
  12. data/lib/bubble-wrap/location.rb +9 -6
  13. data/lib/bubble-wrap/media.rb +10 -6
  14. data/lib/bubble-wrap/test.rb +6 -1
  15. data/lib/bubble-wrap/ui.rb +5 -2
  16. data/lib/bubble-wrap/version.rb +2 -7
  17. data/motion/core.rb +6 -1
  18. data/motion/core/app.rb +3 -64
  19. data/motion/core/device.rb +0 -55
  20. data/motion/core/device/{camera.rb → ios/camera.rb} +0 -0
  21. data/motion/core/device/{camera_wrapper.rb → ios/camera_wrapper.rb} +0 -0
  22. data/motion/core/device/ios/screen.rb +75 -0
  23. data/motion/core/device/osx/screen.rb +18 -0
  24. data/motion/core/device/screen.rb +1 -69
  25. data/motion/core/ios/app.rb +71 -0
  26. data/motion/core/ios/device.rb +59 -0
  27. data/motion/core/osx/app.rb +15 -0
  28. data/motion/core/osx/device.rb +6 -0
  29. data/motion/core/string.rb +3 -2
  30. data/motion/http.rb +0 -364
  31. data/motion/http/query.rb +367 -0
  32. data/motion/http/response.rb +32 -0
  33. data/motion/test_suite_delegate.rb +58 -0
  34. data/motion/ui/ui_alert_view.rb +169 -0
  35. data/motion/ui/ui_bar_button_item.rb +55 -53
  36. data/motion/util/constants.rb +34 -32
  37. data/samples/alert/.gitignore +16 -0
  38. data/samples/alert/Gemfile +3 -0
  39. data/samples/alert/Rakefile +10 -0
  40. data/samples/alert/app/app_delegate.rb +8 -0
  41. data/samples/alert/app/controllers/alert_view_controller.rb +74 -0
  42. data/samples/alert/resources/Default-568h@2x.png +0 -0
  43. data/samples/alert/spec/main_spec.rb +9 -0
  44. data/samples/media/.gitignore +16 -0
  45. data/samples/media/Rakefile +11 -0
  46. data/samples/media/app/app_delegate.rb +8 -0
  47. data/samples/media/app/controllers/play_controller.rb +46 -0
  48. data/samples/media/resources/Default-568h@2x.png +0 -0
  49. data/samples/media/resources/test.mp3 +0 -0
  50. data/samples/media/spec/main_spec.rb +9 -0
  51. data/samples/osx/Gemfile +3 -0
  52. data/samples/osx/Gemfile.lock +10 -0
  53. data/samples/osx/Rakefile +11 -0
  54. data/samples/osx/app/app_delegate.rb +69 -0
  55. data/samples/osx/app/menu.rb +108 -0
  56. data/samples/osx/resources/Credits.rtf +29 -0
  57. data/samples/osx/spec/main_spec.rb +9 -0
  58. data/spec/motion/core/app_spec.rb +5 -164
  59. data/spec/motion/core/device/{camera_spec.rb → ios/camera_spec.rb} +0 -0
  60. data/spec/motion/core/device/{camera_wrapper_spec.rb → ios/camera_wrapper_spec.rb} +0 -0
  61. data/spec/motion/core/device/ios/device_spec.rb +74 -0
  62. data/spec/motion/core/device/{screen_spec.rb → ios/screen_spec.rb} +2 -1
  63. data/spec/motion/core/device/osx/screen_spec.rb +26 -0
  64. data/spec/motion/core/device_spec.rb +0 -71
  65. data/spec/motion/core/ios/app_spec.rb +180 -0
  66. data/spec/motion/core/kvo_spec.rb +23 -7
  67. data/spec/motion/core/ns_index_path_spec.rb +10 -2
  68. data/spec/motion/core/osx/app_spec.rb +15 -0
  69. data/spec/motion/core/string_spec.rb +11 -5
  70. data/spec/motion/core_spec.rb +13 -2
  71. data/spec/motion/http/query_spec.rb +731 -0
  72. data/spec/motion/http/response_spec.rb +44 -0
  73. data/spec/motion/http_spec.rb +0 -722
  74. data/spec/motion/{core → ui}/gestures_spec.rb +0 -0
  75. data/spec/motion/ui/ui_alert_view_spec.rb +1188 -0
  76. data/spec/motion/{core → ui}/ui_bar_button_item_spec.rb +80 -24
  77. data/spec/motion/{core → ui}/ui_control_spec.rb +0 -0
  78. data/spec/motion/util/constants_spec.rb +4 -4
  79. metadata +86 -26
@@ -0,0 +1,9 @@
1
+ describe "Application 'alert'" do
2
+ before do
3
+ @app = UIApplication.sharedApplication
4
+ end
5
+
6
+ it "has one window" do
7
+ @app.windows.size.should == 1
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ .repl_history
2
+ build
3
+ tags
4
+ app/pixate_code.rb
5
+ resources/*.nib
6
+ resources/*.momd
7
+ resources/*.storyboardc
8
+ .DS_Store
9
+ nbproject
10
+ .redcar
11
+ #*#
12
+ *~
13
+ *.sw[po]
14
+ .eprj
15
+ .sass-cache
16
+ .idea
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift("/Library/RubyMotion/lib")
3
+ require 'motion/project'
4
+
5
+ $:.unshift("../../lib")
6
+ require 'bubble-wrap/media'
7
+
8
+ Motion::Project::App.setup do |app|
9
+ # Use `rake config' to see complete project settings.
10
+ app.name = 'media'
11
+ end
@@ -0,0 +1,8 @@
1
+ class AppDelegate
2
+ def application(application, didFinishLaunchingWithOptions:launchOptions)
3
+ @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
4
+ camera_controller = PlayController.alloc.init
5
+ @window.rootViewController = camera_controller
6
+ @window.makeKeyAndVisible
7
+ end
8
+ end
@@ -0,0 +1,46 @@
1
+ class PlayController < UIViewController
2
+ attr_accessor :buttons
3
+
4
+ def init
5
+ super.tap do
6
+ @buttons = []
7
+ end
8
+ end
9
+
10
+ def viewDidLoad
11
+ super
12
+
13
+ self.view.addSubview(build_button("Modal", "tapped_modal"))
14
+ self.view.addSubview(build_button("Frame", "tapped_frame"))
15
+ self.view.backgroundColor = UIColor.whiteColor
16
+ end
17
+
18
+ def build_button(title, callback)
19
+ button = UIButton.buttonWithType(UIButtonTypeRoundedRect)
20
+ button.setTitle(title, forState:UIControlStateNormal)
21
+ button.sizeToFit
22
+
23
+ rect = self.buttons.empty? ? CGRectMake(0, 0, 0, 0) : self.buttons.last.frame
24
+
25
+ button.frame = [[rect.origin.x, rect.origin.y + rect.size.height + 10], button.frame.size]
26
+ button.addTarget(self, action: callback, forControlEvents:UIControlEventTouchUpInside)
27
+
28
+ self.buttons << button
29
+ button
30
+ end
31
+
32
+ def local_file
33
+ NSURL.fileURLWithPath(File.join(NSBundle.mainBundle.resourcePath, 'test.mp3'))
34
+ end
35
+
36
+ def tapped_modal
37
+ BW::Media.play_modal(local_file)
38
+ end
39
+
40
+ def tapped_frame
41
+ BW::Media.play(local_file) do |media_player|
42
+ media_player.view.frame = [[10, 140], [self.view.frame.size.width - 20, 100]]
43
+ self.view.addSubview media_player.view
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,9 @@
1
+ describe "Application 'media'" do
2
+ before do
3
+ @app = UIApplication.sharedApplication
4
+ end
5
+
6
+ it "has one window" do
7
+ @app.windows.size.should == 1
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gem 'bubble-wrap', :path => "../../" # '~> 1.3.0.osx'
@@ -0,0 +1,10 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ bubble-wrap (1.3.0.osx)
5
+
6
+ PLATFORMS
7
+ ruby
8
+
9
+ DEPENDENCIES
10
+ bubble-wrap (~> 1.3.0.osx)
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift("/Library/RubyMotion/lib")
3
+ require 'motion/project/template/osx'
4
+
5
+ require 'bundler'
6
+ Bundler.require :default
7
+
8
+ Motion::Project::App.setup do |app|
9
+ # Use `rake config' to see complete project settings.
10
+ app.name = 'osx'
11
+ end
@@ -0,0 +1,69 @@
1
+ class AppDelegate
2
+ def applicationDidFinishLaunching(notification)
3
+ buildMenu
4
+ buildWindow
5
+ end
6
+
7
+ def buildWindow
8
+ @mainWindow = NSWindow.alloc.initWithContentRect([[240, 180], [480, 360]],
9
+ styleMask: NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
10
+ backing: NSBackingStoreBuffered,
11
+ defer: false)
12
+ @mainWindow.title = "What Is My IP?"
13
+ @mainWindow.orderFrontRegardless
14
+
15
+ @button = make_button("Find IP")
16
+ @button.target = self
17
+ @button.action = "fetch_ip"
18
+
19
+ @label = make_label("_._._._")
20
+
21
+ view = @mainWindow.contentView
22
+ view.addSubview(@button)
23
+ view.addSubview(@label)
24
+
25
+ views_hash = {"button" => @button, "label" => @label}
26
+
27
+ add_constraint "|-[button(<=200)]-|", to: view, views: views_hash
28
+
29
+ add_constraint "|-[label]-|", to: view, views: views_hash
30
+
31
+ add_constraint "V:|-[button]-10-[label]-(>=20,<=60)-|", to: view, views: views_hash
32
+ end
33
+
34
+ def fetch_ip
35
+ @button.title = "Loading"
36
+ BW::HTTP.get("http://jsonip.com") do |response|
37
+ ip = BW::JSON.parse(response.body.to_str)["ip"]
38
+ @label.stringValue = ip
39
+ @button.title = "Find IP"
40
+ end
41
+ end
42
+
43
+ def make_button(title)
44
+ button = NSButton.alloc.initWithFrame(CGRectZero)
45
+ button.title = title
46
+ button.buttonType = NSMomentaryLightButton
47
+ button.bezelStyle = NSRoundedBezelStyle
48
+ button.setTranslatesAutoresizingMaskIntoConstraints(false)
49
+ button
50
+ end
51
+
52
+ def make_label(text)
53
+ textField = NSTextField.alloc.initWithFrame(CGRectZero)
54
+ textField.stringValue = text
55
+ textField.alignment = NSCenterTextAlignment
56
+ textField.bezeled = false
57
+ textField.drawsBackground = false
58
+ textField.editable = false
59
+ textField.selectable = false
60
+ textField.setTranslatesAutoresizingMaskIntoConstraints(false)
61
+ textField
62
+ end
63
+
64
+ def add_constraint(ascii, params = {})
65
+ view = params[:to]
66
+ views_hash = params[:views]
67
+ view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(ascii, options: 0, metrics: nil, views: views_hash))
68
+ end
69
+ end
@@ -0,0 +1,108 @@
1
+ class AppDelegate
2
+ def buildMenu
3
+ @mainMenu = NSMenu.new
4
+
5
+ appName = NSBundle.mainBundle.infoDictionary['CFBundleName']
6
+ addMenu(appName) do
7
+ addItemWithTitle("About #{appName}", action: 'orderFrontStandardAboutPanel:', keyEquivalent: '')
8
+ addItem(NSMenuItem.separatorItem)
9
+ addItemWithTitle('Preferences', action: 'openPreferences:', keyEquivalent: ',')
10
+ addItem(NSMenuItem.separatorItem)
11
+ servicesItem = addItemWithTitle('Services', action: nil, keyEquivalent: '')
12
+ NSApp.servicesMenu = servicesItem.submenu = NSMenu.new
13
+ addItem(NSMenuItem.separatorItem)
14
+ addItemWithTitle("Hide #{appName}", action: 'hide:', keyEquivalent: 'h')
15
+ item = addItemWithTitle('Hide Others', action: 'hideOtherApplications:', keyEquivalent: 'H')
16
+ item.keyEquivalentModifierMask = NSCommandKeyMask|NSAlternateKeyMask
17
+ addItemWithTitle('Show All', action: 'unhideAllApplications:', keyEquivalent: '')
18
+ addItem(NSMenuItem.separatorItem)
19
+ addItemWithTitle("Quit #{appName}", action: 'terminate:', keyEquivalent: 'q')
20
+ end
21
+
22
+ addMenu('File') do
23
+ addItemWithTitle('New', action: 'newDocument:', keyEquivalent: 'n')
24
+ addItemWithTitle('Open…', action: 'openDocument:', keyEquivalent: 'o')
25
+ addItem(NSMenuItem.separatorItem)
26
+ addItemWithTitle('Close', action: 'performClose:', keyEquivalent: 'w')
27
+ addItemWithTitle('Save…', action: 'saveDocument:', keyEquivalent: 's')
28
+ addItemWithTitle('Revert to Saved', action: 'revertDocumentToSaved:', keyEquivalent: '')
29
+ addItem(NSMenuItem.separatorItem)
30
+ addItemWithTitle('Page Setup…', action: 'runPageLayout:', keyEquivalent: 'P')
31
+ addItemWithTitle('Print…', action: 'printDocument:', keyEquivalent: 'p')
32
+ end
33
+
34
+ addMenu('Edit') do
35
+ addItemWithTitle('Undo', action: 'undo:', keyEquivalent: 'z')
36
+ addItemWithTitle('Redo', action: 'redo:', keyEquivalent: 'Z')
37
+ addItem(NSMenuItem.separatorItem)
38
+ addItemWithTitle('Cut', action: 'cut:', keyEquivalent: 'x')
39
+ addItemWithTitle('Copy', action: 'copy:', keyEquivalent: 'c')
40
+ addItemWithTitle('Paste', action: 'paste:', keyEquivalent: 'v')
41
+ item = addItemWithTitle('Paste and Match Style', action: 'pasteAsPlainText:', keyEquivalent: 'V')
42
+ item.keyEquivalentModifierMask = NSCommandKeyMask|NSAlternateKeyMask
43
+ addItemWithTitle('Delete', action: 'delete:', keyEquivalent: '')
44
+ addItemWithTitle('Select All', action: 'selectAll:', keyEquivalent: 'a')
45
+ end
46
+
47
+ fontMenu = createMenu('Font') do
48
+ addItemWithTitle('Show Fonts', action: 'orderFrontFontPanel:', keyEquivalent: 't')
49
+ addItemWithTitle('Bold', action: 'addFontTrait:', keyEquivalent: 'b')
50
+ addItemWithTitle('Italic', action: 'addFontTrait:', keyEquivalent: 'b')
51
+ addItemWithTitle('Underline', action: 'underline:', keyEquivalent: 'u')
52
+ addItem(NSMenuItem.separatorItem)
53
+ addItemWithTitle('Bigger', action: 'modifyFont:', keyEquivalent: '+')
54
+ addItemWithTitle('Smaller', action: 'modifyFont:', keyEquivalent: '-')
55
+ end
56
+
57
+ textMenu = createMenu('Text') do
58
+ addItemWithTitle('Align Left', action: 'alignLeft:', keyEquivalent: '{')
59
+ addItemWithTitle('Center', action: 'alignCenter:', keyEquivalent: '|')
60
+ addItemWithTitle('Justify', action: 'alignJustified:', keyEquivalent: '')
61
+ addItemWithTitle('Align Right', action: 'alignRight:', keyEquivalent: '}')
62
+ addItem(NSMenuItem.separatorItem)
63
+ addItemWithTitle('Show Ruler', action: 'toggleRuler:', keyEquivalent: '')
64
+ addItemWithTitle('Copy Ruler', action: 'copyRuler:', keyEquivalent: 'c')
65
+ addItemWithTitle('Paste Ruler', action: 'pasteRuler:', keyEquivalent: 'v')
66
+ end
67
+
68
+ addMenu('Format') do
69
+ addItem fontMenu
70
+ addItem textMenu
71
+ end
72
+
73
+ addMenu('View') do
74
+ item = addItemWithTitle('Show Toolbar', action: 'toggleToolbarShown:', keyEquivalent: 't')
75
+ item.keyEquivalentModifierMask = NSCommandKeyMask|NSAlternateKeyMask
76
+ addItemWithTitle('Customize Toolbar…', action: 'runToolbarCustomizationPalette:', keyEquivalent: '')
77
+ end
78
+
79
+ NSApp.windowsMenu = addMenu('Window') do
80
+ addItemWithTitle('Minimize', action: 'performMiniaturize:', keyEquivalent: 'm')
81
+ addItemWithTitle('Zoom', action: 'performZoom:', keyEquivalent: '')
82
+ addItem(NSMenuItem.separatorItem)
83
+ addItemWithTitle('Bring All To Front', action: 'arrangeInFront:', keyEquivalent: '')
84
+ end.menu
85
+
86
+ NSApp.helpMenu = addMenu('Help') do
87
+ addItemWithTitle("#{appName} Help", action: 'showHelp:', keyEquivalent: '?')
88
+ end.menu
89
+
90
+ NSApp.mainMenu = @mainMenu
91
+ end
92
+
93
+ private
94
+
95
+ def addMenu(title, &b)
96
+ item = createMenu(title, &b)
97
+ @mainMenu.addItem item
98
+ item
99
+ end
100
+
101
+ def createMenu(title, &b)
102
+ menu = NSMenu.alloc.initWithTitle(title)
103
+ menu.instance_eval(&b) if b
104
+ item = NSMenuItem.alloc.initWithTitle(title, action: nil, keyEquivalent: '')
105
+ item.submenu = menu
106
+ item
107
+ end
108
+ end
@@ -0,0 +1,29 @@
1
+ {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
2
+ {\colortbl;\red255\green255\blue255;}
3
+ \paperw9840\paperh8400
4
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
5
+
6
+ \f0\b\fs24 \cf0 Engineering:
7
+ \b0 \
8
+ Some people\
9
+ \
10
+
11
+ \b Human Interface Design:
12
+ \b0 \
13
+ Some other people\
14
+ \
15
+
16
+ \b Testing:
17
+ \b0 \
18
+ Hopefully not nobody\
19
+ \
20
+
21
+ \b Documentation:
22
+ \b0 \
23
+ Whoever\
24
+ \
25
+
26
+ \b With special thanks to:
27
+ \b0 \
28
+ Mom\
29
+ }
@@ -0,0 +1,9 @@
1
+ describe "Application 'osx'" do
2
+ before do
3
+ @app = UIApplication.sharedApplication
4
+ end
5
+
6
+ it "has one window" do
7
+ @app.windows.size.should == 1
8
+ end
9
+ end
@@ -7,7 +7,11 @@ describe BubbleWrap::App do
7
7
 
8
8
  describe '.resources_path' do
9
9
  it 'should end in "/testSuite.app"' do
10
- App.resources_path.should =~ /\/testSuite(_spec)?.app$/
10
+ if App.osx?
11
+ App.resources_path.should =~ /\/testSuite(_spec)?.app\/Contents\/Resources$/
12
+ else
13
+ App.resources_path.should =~ /\/testSuite(_spec)?.app$/
14
+ end
11
15
  end
12
16
  end
13
17
 
@@ -23,119 +27,6 @@ describe BubbleWrap::App do
23
27
  end
24
28
  end
25
29
 
26
- describe '.alert' do
27
- after do
28
- @alert.dismissWithClickedButtonIndex(@alert.cancelButtonIndex, animated: false)
29
- end
30
-
31
- describe "with only one string argument" do
32
- before do
33
- @alert = App.alert('1.21 Gigawatts!')
34
- end
35
-
36
- it 'returns an alert' do
37
- @alert.class.should == UIAlertView
38
- end
39
-
40
- it 'is displaying the correct title' do
41
- @alert.title.should == '1.21 Gigawatts!'
42
- end
43
-
44
- describe 'cancelButton' do
45
- it 'is present' do
46
- @alert.cancelButtonIndex.should == 0
47
- end
48
-
49
- it 'has the correct title' do
50
- @alert.buttonTitleAtIndex(@alert.cancelButtonIndex).should == 'OK'
51
- end
52
- end
53
- end
54
-
55
- describe "with only two string arguments" do
56
- before do
57
- @alert = App.alert('1.21 Gigawatts!', 'Great Scott!')
58
- end
59
-
60
- it 'returns an alert' do
61
- @alert.class.should == UIAlertView
62
- end
63
-
64
- it 'is displaying the correct title' do
65
- @alert.title.should == '1.21 Gigawatts!'
66
- end
67
-
68
- describe 'cancelButton' do
69
- it 'is present' do
70
- @alert.cancelButtonIndex.should == 0
71
- end
72
-
73
- it 'has the correct title' do
74
- @alert.buttonTitleAtIndex(@alert.cancelButtonIndex).should == 'Great Scott!'
75
- end
76
- end
77
- end
78
-
79
- describe "with variable args" do
80
- before do
81
- @alert = App.alert('1.21 Gigawatts!', cancel_button_title: 'Great Scott!',
82
- message: 'Some random message')
83
- end
84
-
85
- it 'returns an alert' do
86
- @alert.class.should == UIAlertView
87
- end
88
-
89
- it 'is displaying the correct title' do
90
- @alert.title.should == '1.21 Gigawatts!'
91
- end
92
-
93
- it 'is displaying the correct message' do
94
- @alert.message.should == 'Some random message'
95
- end
96
-
97
- describe 'cancelButton' do
98
- it 'is present' do
99
- @alert.cancelButtonIndex.should == 0
100
- end
101
-
102
- it 'has the correct title' do
103
- @alert.buttonTitleAtIndex(@alert.cancelButtonIndex).should == 'Great Scott!'
104
- end
105
- end
106
- end
107
-
108
- describe "with a block" do
109
- before do
110
- @alert = App.alert('1.21 Gigawatts!') do |alert|
111
- alert.message = 'My message!!'
112
- end
113
- end
114
-
115
- it 'returns an alert' do
116
- @alert.class.should == UIAlertView
117
- end
118
-
119
- it 'is displaying the correct title' do
120
- @alert.title.should == '1.21 Gigawatts!'
121
- end
122
-
123
- it 'is displaying the correct message' do
124
- @alert.message.should == 'My message!!'
125
- end
126
-
127
- describe 'cancelButton' do
128
- it 'is present' do
129
- @alert.cancelButtonIndex.should == 0
130
- end
131
-
132
- it 'has the correct title' do
133
- @alert.buttonTitleAtIndex(@alert.cancelButtonIndex).should == 'OK'
134
- end
135
- end
136
- end
137
- end
138
-
139
30
  describe '.states' do
140
31
  it 'returns a hash' do
141
32
  App.states.class.should == Hash
@@ -163,37 +54,6 @@ describe BubbleWrap::App do
163
54
  end
164
55
  end
165
56
 
166
- describe '.frame' do
167
- it 'returns Application Frame' do
168
- App.frame.should == UIScreen.mainScreen.applicationFrame
169
- end
170
- end
171
-
172
- describe '.bounds' do
173
- it 'returns Main Screen bounds' do
174
- App.bounds.should == UIScreen.mainScreen.bounds
175
- end
176
- end
177
-
178
-
179
- describe '.delegate' do
180
- it 'returns a TestSuiteDelegate' do
181
- App.delegate.should == UIApplication.sharedApplication.delegate
182
- end
183
- end
184
-
185
- describe '.shared' do
186
- it 'returns UIApplication.sharedApplication' do
187
- App.shared.should == UIApplication.sharedApplication
188
- end
189
- end
190
-
191
- describe '.window' do
192
- it 'returns UIApplication.sharedApplication.keyWindow' do
193
- App.window.should == UIApplication.sharedApplication.keyWindow
194
- end
195
- end
196
-
197
57
  describe '.run_after' do
198
58
  class DelayedRunAfterTest; attr_accessor :test_value end
199
59
 
@@ -208,25 +68,6 @@ describe BubbleWrap::App do
208
68
 
209
69
  end
210
70
 
211
- describe ".open_url" do
212
-
213
- it "uses NSURL or converts NSString in NSURL and opens it" do
214
- application = UIApplication.sharedApplication
215
- def application.url; @url end
216
- def application.openURL(url); @url = url end
217
-
218
- url = NSURL.URLWithString('http://localhost')
219
- App.open_url(url)
220
- application.url.should.equal url
221
-
222
- url = 'http://localhost'
223
- App.open_url(url)
224
- application.url.class.should.equal NSURL
225
- application.url.description.should.equal url
226
- end
227
-
228
- end
229
-
230
71
  describe ".environment" do
231
72
 
232
73
  it 'returns current application environment' do