ruboto 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +35 -11
- data/assets/rakelib/ruboto.rake +2 -0
- data/assets/samples/sample_activity.rb +1 -0
- data/assets/samples/sample_class.rb +2 -0
- data/assets/samples/sample_class_test.rb +1 -0
- data/assets/src/InheritingActivity.java +1 -1
- data/assets/src/InheritingBroadcastReceiver.java +2 -1
- data/assets/src/InheritingClass.java +15 -7
- data/assets/src/InheritingService.java +1 -2
- data/assets/src/RubotoActivity.java +20 -110
- data/assets/src/RubotoBroadcastReceiver.java +16 -62
- data/assets/src/RubotoService.java +13 -89
- data/assets/src/org/ruboto/EntryPointActivity.java +1 -1
- data/assets/src/org/ruboto/JRubyAdapter.java +23 -23
- data/assets/src/org/ruboto/RubotoComponent.java +8 -0
- data/assets/src/org/ruboto/Script.java +10 -5
- data/assets/src/org/ruboto/ScriptInfo.java +53 -0
- data/assets/src/org/ruboto/ScriptLoader.java +143 -0
- data/assets/src/org/ruboto/test/ActivityTest.java +15 -8
- data/assets/src/org/ruboto/test/InstrumentationTestRunner.java +11 -6
- data/assets/src/ruboto/activity.rb +43 -17
- data/assets/src/ruboto/base.rb +7 -1
- data/assets/src/ruboto/generate.rb +6 -2
- data/assets/src/ruboto/legacy.rb +1 -1
- data/assets/src/ruboto/menu.rb +4 -4
- data/assets/src/ruboto/widget.rb +4 -11
- data/lib/ruboto/commands/base.rb +21 -7
- data/lib/ruboto/util/build.rb +6 -3
- data/lib/ruboto/util/code_formatting.rb +2 -2
- data/lib/ruboto/util/update.rb +58 -58
- data/lib/ruboto/util/xml_element.rb +14 -11
- data/lib/ruboto/version.rb +2 -1
- data/test/activity/generate_activity.rb +35 -0
- data/test/activity/generate_activity_test.rb +17 -0
- data/test/activity/image_button_activity.rb +1 -0
- data/test/activity/image_button_and_button_activity.rb +1 -0
- data/test/activity/margins_activity.rb +1 -0
- data/test/activity/navigation_activity.rb +20 -5
- data/test/activity/navigation_activity_test.rb +43 -4
- data/test/activity/option_menu_activity.rb +1 -0
- data/test/activity/psych_activity.rb +2 -1
- data/test/activity/stack_activity.rb +1 -0
- data/test/activity/stack_activity_test.rb +11 -5
- data/test/block_def_activity/margins_activity.rb +2 -1
- data/test/block_def_activity/psych_activity.rb +1 -1
- data/test/block_def_activity/stack_activity_test.rb +1 -1
- data/test/handle_activity/psych_activity.rb +1 -1
- data/test/handle_activity/stack_activity_test.rb +17 -9
- data/test/minimal_app_test.rb +2 -2
- data/test/rake_test.rb +1 -1
- data/test/ruboto_gen_test.rb +162 -34
- data/test/service_test.rb +1 -2
- data/test/sqldroid_test.rb +87 -0
- data/test/test_helper.rb +19 -12
- data/test/update_test_methods.rb +29 -44
- data/test/view_constants_test.rb +1 -2
- metadata +12 -4
@@ -63,7 +63,7 @@ module Ruboto
|
|
63
63
|
|
64
64
|
def all_methods(method_base="all", method_include="", method_exclude="", implements="")
|
65
65
|
# get all the methogs
|
66
|
-
all_methods = get_elements(
|
66
|
+
all_methods = get_elements('method').select{|m| m.attribute('static') != 'true'}
|
67
67
|
|
68
68
|
# establish the base set of methods
|
69
69
|
working_methods = case method_base.to_s
|
@@ -147,7 +147,7 @@ module Ruboto
|
|
147
147
|
|
148
148
|
def super_return
|
149
149
|
rv = super_string
|
150
|
-
return rv unless attribute("return")
|
150
|
+
return "{#{rv} return;}" unless attribute("return")
|
151
151
|
rv ? "return #{rv}" : default_return
|
152
152
|
end
|
153
153
|
|
@@ -172,7 +172,7 @@ module Ruboto
|
|
172
172
|
return_class = attribute("return").capitalize
|
173
173
|
end
|
174
174
|
return_cast = "return (#{return_class.gsub("<", "<").gsub(">", ">")}) " if return_class
|
175
|
-
convert_return = "#{return_class}.class, "
|
175
|
+
convert_return = "#{return_class.sub(/<.*>$/, '')}.class, "
|
176
176
|
end
|
177
177
|
|
178
178
|
if on_ruby_instance
|
@@ -183,17 +183,17 @@ module Ruboto
|
|
183
183
|
"JRubyAdapter.isJRubyPreOneSeven()",
|
184
184
|
params.map{|i| "JRubyAdapter.put(\"$arg_#{i[0]}\", #{i[0]});"} +
|
185
185
|
[
|
186
|
-
'JRubyAdapter.put("$ruby_instance",
|
186
|
+
'JRubyAdapter.put("$ruby_instance", scriptInfo.getRubyInstance());',
|
187
187
|
"#{return_cast}#{'((Number)' if return_int}JRubyAdapter.runScriptlet(\"$ruby_instance.#{method_name}(#{global_args})\")#{').intValue()' if return_int};",
|
188
188
|
],
|
189
189
|
if_else(
|
190
190
|
"JRubyAdapter.isJRubyOneSeven()",
|
191
|
-
["#{return_cast}JRubyAdapter.runRubyMethod(#{convert_return}
|
191
|
+
["#{return_cast}JRubyAdapter.runRubyMethod(#{convert_return}scriptInfo.getRubyInstance(), \"#{method_name}\"#{args});"],
|
192
192
|
['throw new RuntimeException("Unknown JRuby version: " + JRubyAdapter.get("JRUBY_VERSION"));']
|
193
193
|
)
|
194
194
|
)
|
195
195
|
else
|
196
|
-
["#{return_cast}JRubyAdapter.runRubyMethod(#{convert_return}
|
196
|
+
["#{return_cast}JRubyAdapter.runRubyMethod(#{convert_return}scriptInfo.getCallbackProcs()[#{constant_string}], \"call\" #{args});"]
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
@@ -205,20 +205,22 @@ module Ruboto
|
|
205
205
|
method_call(
|
206
206
|
(attribute("return") ? attribute("return") : "void"),
|
207
207
|
attribute("name"), parameters,
|
208
|
+
get_elements('exception').map{|m| m.attribute('type')},
|
209
|
+
["if (ScriptLoader.isCalledFromJRuby()) #{super_return}",
|
208
210
|
if_else(
|
209
211
|
"JRubyAdapter.isInitialized()",
|
210
212
|
if_else(
|
211
|
-
"
|
213
|
+
"scriptInfo.getCallbackProcs() != null && scriptInfo.getCallbackProcs()[#{constant_string}] != null",
|
212
214
|
[super_string] + ruby_call,
|
213
|
-
['String rubyClassName =
|
215
|
+
['String rubyClassName = scriptInfo.getRubyClassName();'] +
|
214
216
|
if_else(
|
215
217
|
# TODO(uwe): Remove defined?(rubyClassName) if we remove non-class-based class definitions
|
216
218
|
"(Boolean)JRubyAdapter.runScriptlet(\"defined?(\" + rubyClassName + \") == 'constant' && \" + rubyClassName + \".instance_methods(false).any?{|m| m.to_sym == :#{snake_case_attribute}}\")",
|
217
|
-
|
219
|
+
ruby_call(true),
|
218
220
|
if_else(
|
219
221
|
# TODO(uwe): Remove defined?(rubyClassName) if we remove non-class-based class definitions
|
220
222
|
"(Boolean)JRubyAdapter.runScriptlet(\"defined?(\" + rubyClassName + \") == 'constant' && \" + rubyClassName + \".instance_methods(false).any?{|m| m.to_sym == :#{attribute('name')}}\")",
|
221
|
-
|
223
|
+
ruby_call(true, true),
|
222
224
|
[super_return]
|
223
225
|
)
|
224
226
|
)
|
@@ -228,11 +230,12 @@ module Ruboto
|
|
228
230
|
super_return,
|
229
231
|
]
|
230
232
|
)
|
233
|
+
]
|
231
234
|
).indent.join("\n")
|
232
235
|
end
|
233
236
|
|
234
237
|
def constructor_definition(class_name)
|
235
|
-
method_call(nil, class_name, parameters, [super_string]).indent.join("\n")
|
238
|
+
method_call(nil, class_name, parameters, nil, [super_string]).indent.join("\n")
|
236
239
|
end
|
237
240
|
end
|
238
241
|
end
|
data/lib/ruboto/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'ruboto/activity'
|
2
|
+
require 'ruboto/widget'
|
3
|
+
require 'ruboto/generate'
|
4
|
+
|
5
|
+
ruboto_import_widgets :LinearLayout, :ListView, :TextView
|
6
|
+
|
7
|
+
ruboto_generate("android.widget.ArrayAdapter" => $package_name + ".MyArrayAdapter")
|
8
|
+
|
9
|
+
class GenerateActivity
|
10
|
+
def on_create(bundle)
|
11
|
+
super
|
12
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
13
|
+
|
14
|
+
adapter = MyArrayAdapter.new(self, android.R.layout.simple_list_item_1 , AndroidIds::text1, ['Record one', 'Record two'])
|
15
|
+
adapter.initialize_ruboto_callbacks do
|
16
|
+
def get_view(position, convert_view, parent)
|
17
|
+
puts "IN get_view!!!"
|
18
|
+
@inflater ||= context.getSystemService(Context::LAYOUT_INFLATER_SERVICE)
|
19
|
+
row = convert_view ? convert_view : @inflater.inflate(mResource, nil)
|
20
|
+
row.findViewById(mFieldId).text = get_item(position)
|
21
|
+
row
|
22
|
+
rescue Exception
|
23
|
+
puts "Exception getting list item view: #$!"
|
24
|
+
puts $!.backtrace.join("\n")
|
25
|
+
convert_view
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
self.content_view =
|
30
|
+
linear_layout :orientation => LinearLayout::VERTICAL do
|
31
|
+
@text_view_margins = text_view :text => 'What hath Matz wrought?', :id => 42
|
32
|
+
@list_view = list_view :adapter => adapter, :id => 43
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
activity Java::org.ruboto.test_app.GenerateActivity
|
2
|
+
|
3
|
+
setup do |activity|
|
4
|
+
start = Time.now
|
5
|
+
loop do
|
6
|
+
@text_view = activity.findViewById(42)
|
7
|
+
@list_view = activity.findViewById(43)
|
8
|
+
break if (@text_view && @list_view) || (Time.now - start > 60)
|
9
|
+
sleep 1
|
10
|
+
end
|
11
|
+
assert @text_view
|
12
|
+
assert @list_view
|
13
|
+
end
|
14
|
+
|
15
|
+
test("activity starts") do |activity|
|
16
|
+
assert true
|
17
|
+
end
|
@@ -5,6 +5,7 @@ ruboto_import_widgets :ImageButton, :LinearLayout, :TextView
|
|
5
5
|
|
6
6
|
class ImageButtonActivity
|
7
7
|
def on_create(bundle)
|
8
|
+
super
|
8
9
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
10
|
|
10
11
|
click_handler = proc do |view|
|
@@ -5,6 +5,7 @@ ruboto_import_widgets :Button, :ImageButton, :LinearLayout, :TextView
|
|
5
5
|
|
6
6
|
class ImageButtonAndButtonActivity
|
7
7
|
def on_create(bundle)
|
8
|
+
super
|
8
9
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
10
|
|
10
11
|
self.content_view =
|
@@ -3,8 +3,9 @@ require 'ruboto/widget'
|
|
3
3
|
|
4
4
|
ruboto_import_widgets :Button, :LinearLayout, :TextView
|
5
5
|
|
6
|
-
class NavigationActivity
|
6
|
+
class NavigationActivity < Java::OrgRuboto::EntryPointActivity
|
7
7
|
def on_create(bundle)
|
8
|
+
super
|
8
9
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
10
|
|
10
11
|
self.content_view =
|
@@ -15,7 +16,8 @@ class NavigationActivity
|
|
15
16
|
button :text => 'Next by Ruby class', :width => :match_parent, :id => 44, :on_click_listener => proc { start_next_ruby_activity }
|
16
17
|
button :text => 'Next by script name', :width => :match_parent, :id => 45, :on_click_listener => proc { start_activity_by_script_name }
|
17
18
|
button :text => 'Inline block', :width => :match_parent, :id => 46, :on_click_listener => proc { start_inline_activity }
|
18
|
-
button :text => '
|
19
|
+
button :text => 'Inline block with options', :width => :match_parent, :id => 47, :on_click_listener => proc { start_inline_activity_with_options }
|
20
|
+
button :text => 'Infile class', :width => :match_parent, :id => 48, :on_click_listener => proc { start_infile_activity }
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
@@ -46,10 +48,24 @@ class NavigationActivity
|
|
46
48
|
end
|
47
49
|
|
48
50
|
def start_inline_activity
|
49
|
-
start_ruboto_activity
|
51
|
+
start_ruboto_activity do
|
50
52
|
def on_create(bundle)
|
53
|
+
super
|
51
54
|
set_title 'Inline Activity'
|
55
|
+
self.content_view =
|
56
|
+
linear_layout :orientation => :vertical, :gravity => :center_horizontal do
|
57
|
+
text_view :text => 'This is an inline activity.', :id => 42, :width => :match_parent,
|
58
|
+
:gravity => :center, :text_size => 48.0
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
52
63
|
|
64
|
+
def start_inline_activity_with_options
|
65
|
+
start_ruboto_activity(:class_name => 'InlineActivity') do
|
66
|
+
def on_create(bundle)
|
67
|
+
super
|
68
|
+
set_title 'Inline Activity'
|
53
69
|
self.content_view =
|
54
70
|
linear_layout :orientation => :vertical, :gravity => :center_horizontal do
|
55
71
|
text_view :text => 'This is an inline activity.', :id => 42, :width => :match_parent,
|
@@ -71,9 +87,8 @@ class NavigationActivity
|
|
71
87
|
end
|
72
88
|
|
73
89
|
class InfileActivity
|
74
|
-
include Ruboto::Activity
|
75
|
-
|
76
90
|
def on_create(bundle)
|
91
|
+
super
|
77
92
|
set_title 'Infile Activity'
|
78
93
|
|
79
94
|
self.content_view =
|
@@ -60,10 +60,22 @@ end
|
|
60
60
|
|
61
61
|
test('button starts inline activity', :ui => false) do |activity|
|
62
62
|
assert_equal "What hath Matz wrought?", @text_view.text
|
63
|
-
|
63
|
+
monitor = add_monitor('org.ruboto.RubotoActivity', nil, false)
|
64
|
+
begin
|
65
|
+
activity.run_on_ui_thread { activity.find_view_by_id(46).perform_click }
|
66
|
+
current_activity = wait_for_monitor_with_timeout(monitor, 5000)
|
67
|
+
assert current_activity
|
68
|
+
current_activity.run_on_ui_thread { current_activity.finish }
|
69
|
+
# FIXME(uwe): Replace sleep with proper monitor
|
70
|
+
sleep 3
|
71
|
+
ensure
|
72
|
+
puts "Removing monitor"
|
73
|
+
removeMonitor(monitor)
|
74
|
+
end
|
75
|
+
|
64
76
|
start = Time.now
|
65
77
|
loop do
|
66
|
-
@text_view =
|
78
|
+
@text_view = current_activity.find_view_by_id(42)
|
67
79
|
break if (@text_view && @text_view.text == 'This is an inline activity.') || (Time.now - start > 10)
|
68
80
|
puts 'wait for text'
|
69
81
|
sleep 0.5
|
@@ -72,17 +84,44 @@ test('button starts inline activity', :ui => false) do |activity|
|
|
72
84
|
assert_equal 'This is an inline activity.', @text_view.text
|
73
85
|
end
|
74
86
|
|
75
|
-
test('button starts
|
87
|
+
test('button starts inline activity with options', :ui => false) do |activity|
|
76
88
|
assert_equal "What hath Matz wrought?", @text_view.text
|
77
89
|
monitor = add_monitor('org.ruboto.RubotoActivity', nil, false)
|
78
90
|
begin
|
79
91
|
activity.run_on_ui_thread { activity.find_view_by_id(47).perform_click }
|
80
92
|
current_activity = wait_for_monitor_with_timeout(monitor, 5000)
|
93
|
+
assert current_activity
|
94
|
+
current_activity.run_on_ui_thread { current_activity.finish }
|
95
|
+
# FIXME(uwe): Replace sleep with proper monitor
|
96
|
+
sleep 3
|
97
|
+
ensure
|
98
|
+
puts "Removing monitor"
|
99
|
+
removeMonitor(monitor)
|
100
|
+
end
|
101
|
+
|
102
|
+
start = Time.now
|
103
|
+
loop do
|
104
|
+
@text_view = current_activity.find_view_by_id(42)
|
105
|
+
break if (@text_view && @text_view.text == 'This is an inline activity.') || (Time.now - start > 10)
|
106
|
+
puts 'wait for text'
|
107
|
+
sleep 0.5
|
108
|
+
end
|
109
|
+
assert @text_view
|
110
|
+
assert_equal 'This is an inline activity.', @text_view.text
|
111
|
+
end
|
112
|
+
|
113
|
+
test('button starts infile class activity', :ui => false) do |activity|
|
114
|
+
assert_equal "What hath Matz wrought?", @text_view.text
|
115
|
+
monitor = add_monitor('org.ruboto.RubotoActivity', nil, false)
|
116
|
+
begin
|
117
|
+
activity.run_on_ui_thread { activity.find_view_by_id(48).perform_click }
|
118
|
+
current_activity = wait_for_monitor_with_timeout(monitor, 5000)
|
81
119
|
ensure
|
82
120
|
removeMonitor(monitor)
|
83
121
|
end
|
122
|
+
puts "new activity: #{current_activity.inspect}"
|
84
123
|
assert current_activity
|
85
|
-
|
124
|
+
assert current_activity.is_a? Java::OrgRuboto::RubotoActivity
|
86
125
|
start = Time.now
|
87
126
|
loop do
|
88
127
|
@text_view = current_activity.find_view_by_id(42)
|
@@ -6,7 +6,7 @@ if RUBY_VERSION < '1.9'
|
|
6
6
|
$LOADED_FEATURES << 'psych.so'
|
7
7
|
$LOAD_PATH << File.join(Config::CONFIG['libdir'], 'ruby/1.9')
|
8
8
|
end
|
9
|
-
#
|
9
|
+
# ODOT
|
10
10
|
|
11
11
|
require 'ruboto/util/stack'
|
12
12
|
with_large_stack { require 'psych.rb' }
|
@@ -20,6 +20,7 @@ ruboto_import_widgets :Button, :LinearLayout, :TextView
|
|
20
20
|
|
21
21
|
class PsychActivity
|
22
22
|
def on_create(bundle)
|
23
|
+
super
|
23
24
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
24
25
|
self.content_view =
|
25
26
|
linear_layout :orientation => LinearLayout::VERTICAL, :gravity => android.view.Gravity::CENTER do
|
@@ -11,6 +11,7 @@ class StackActivity
|
|
11
11
|
STACK_DEPTH_CLASS = java.lang.Thread.current_thread.stack_trace.length.to_s
|
12
12
|
def on_create(bundle)
|
13
13
|
stack_depth_on_create = java.lang.Thread.current_thread.stack_trace.length.to_s
|
14
|
+
super
|
14
15
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
15
16
|
|
16
17
|
self.content_view =
|
@@ -10,8 +10,14 @@ setup do |activity|
|
|
10
10
|
assert @text_view
|
11
11
|
end
|
12
12
|
|
13
|
+
# ANDROID: 10, PLATFORM: 0.4.7, JRuby: 1.7.0.dev '28334966' expected, but got '28335067'
|
14
|
+
|
13
15
|
test('stack depth') do |activity|
|
14
|
-
os_offset = {
|
16
|
+
os_offset = {
|
17
|
+
13 => [1]*4,
|
18
|
+
15 => [0, 0, 1, 1],
|
19
|
+
16 => [1]*4,
|
20
|
+
}[android.os.Build::VERSION::SDK_INT] || [0, 0, 0, 0]
|
15
21
|
if org.ruboto.JRubyAdapter.uses_platform_apk?
|
16
22
|
jruby_offset = {
|
17
23
|
'0.4.7' => [0, 0, 0, 0],
|
@@ -24,10 +30,10 @@ test('stack depth') do |activity|
|
|
24
30
|
}[org.jruby.runtime.Constants::VERSION] || [0, 0, 0, 0]
|
25
31
|
end
|
26
32
|
version_message ="ANDROID: #{android.os.Build::VERSION::SDK_INT}, PLATFORM: #{org.ruboto.JRubyAdapter.uses_platform_apk ? org.ruboto.JRubyAdapter.platform_version_name : 'STANDALONE'}, JRuby: #{org.jruby.runtime.Constants::VERSION}"
|
27
|
-
assert_equal [
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
assert_equal [28 + os_offset[0] + jruby_offset[0],
|
34
|
+
33 + os_offset[1] + jruby_offset[1],
|
35
|
+
50 + os_offset[2] + jruby_offset[2],
|
36
|
+
67 + os_offset[3] + jruby_offset[3]], [activity.find_view_by_id(42).text.to_i,
|
31
37
|
activity.find_view_by_id(43).text.to_i,
|
32
38
|
activity.find_view_by_id(44).text.to_i,
|
33
39
|
activity.find_view_by_id(45).text.to_i], version_message
|
@@ -25,7 +25,7 @@ test('stack depth') do |activity|
|
|
25
25
|
end
|
26
26
|
version_message ="ANDROID: #{android.os.Build::VERSION::SDK_INT}, PLATFORM: #{org.ruboto.JRubyAdapter.uses_platform_apk ? org.ruboto.JRubyAdapter.platform_version_name : 'STANDALONE'}, JRuby: #{org.jruby.runtime.Constants::VERSION}"
|
27
27
|
assert_equal [43 + os_offset + jruby_offset[0],
|
28
|
-
|
28
|
+
71 + os_offset + jruby_offset[1],
|
29
29
|
61 + os_offset + jruby_offset[2],
|
30
30
|
78 + os_offset + jruby_offset[3]], [activity.find_view_by_id(42).text.to_i,
|
31
31
|
activity.find_view_by_id(43).text.to_i,
|
@@ -10,26 +10,34 @@ setup do |activity|
|
|
10
10
|
assert @text_view
|
11
11
|
end
|
12
12
|
|
13
|
+
# ANDROID: 15, PLATFORM: STANDALONE, JRuby: 1.6.7 '44697894' expected, but got '44687793'
|
14
|
+
# ANDROID: 15, PLATFORM: 0.4.8.dev, JRuby: 1.7.0.preview2 '[44, 68, 77, 93]' expected, but got '[44, 67, 76, 92]'
|
15
|
+
# ANDROID: 10, PLATFORM: STANDALONE, JRuby: 1.7.0.preview2 '[43, 67, 76, 92]' expected, but got '[43, 66, 75, 91]'
|
16
|
+
# ANDROID: 15, PLATFORM: STANDALONE, JRuby: 1.7.0.preview2 '[44, 68, 77, 93]' expected, but got '[44, 67, 76, 92]'
|
17
|
+
|
13
18
|
test('stack depth') do |activity|
|
14
19
|
os_offset = {13 => 1, 15 => 1, 16 => 1}[android.os.Build::VERSION::SDK_INT].to_i
|
15
20
|
if org.ruboto.JRubyAdapter.uses_platform_apk?
|
16
21
|
jruby_offset = {
|
17
|
-
'0.4.7'
|
22
|
+
'0.4.7' => [0, 0, 0, 0],
|
18
23
|
'0.4.8.dev' => [0, -1, -1, -1],
|
19
24
|
}[org.ruboto.JRubyAdapter.platform_version_name] || [0, 0, 0, 0]
|
20
25
|
else # STANDALONE
|
21
26
|
jruby_offset = {
|
22
|
-
'1.7.0.dev' => [1,
|
27
|
+
'1.7.0.dev' => [1, 0, 0, 0],
|
23
28
|
'1.7.0.preview1' => [0, -1, -1, -1],
|
24
29
|
'1.7.0.preview2' => [0, -1, -1, -1],
|
25
30
|
}[org.jruby.runtime.Constants::VERSION] || [0, 0, 0, 0]
|
26
31
|
end
|
27
32
|
version_message ="ANDROID: #{android.os.Build::VERSION::SDK_INT}, PLATFORM: #{org.ruboto.JRubyAdapter.uses_platform_apk ? org.ruboto.JRubyAdapter.platform_version_name : 'STANDALONE'}, JRuby: #{org.jruby.runtime.Constants::VERSION}"
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
expected = [43 + os_offset + jruby_offset[0],
|
34
|
+
67 + os_offset + jruby_offset[1],
|
35
|
+
76 + os_offset + jruby_offset[2],
|
36
|
+
92 + os_offset + jruby_offset[3]]
|
37
|
+
actual = [activity.find_view_by_id(42).text.to_i,
|
38
|
+
activity.find_view_by_id(43).text.to_i,
|
39
|
+
activity.find_view_by_id(44).text.to_i,
|
40
|
+
activity.find_view_by_id(45).text.to_i]
|
41
|
+
assert_equal expected, actual, version_message
|
42
|
+
puts "handle stack: #{version_message} #{actual.inspect}"
|
35
43
|
end
|