ruboto 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -6
- data/RELEASE_CANDICATE_DOC.md +5 -3
- data/RELEASE_DOC.md +32 -11
- data/Rakefile +86 -36
- data/assets/rakelib/ruboto.rake +33 -14
- data/assets/rakelib/ruboto.stdlib.rake +1 -1
- data/assets/res/layout/get_ruboto_core.xml +1 -2
- data/assets/src/RubotoService.java +19 -2
- data/assets/src/org/ruboto/JRubyAdapter.java +4 -0
- data/assets/src/org/ruboto/SplashActivity.java +17 -17
- data/assets/src/ruboto/base.rb +13 -4
- data/assets/src/ruboto/package.rb +12 -3
- data/assets/src/ruboto/service.rb +45 -8
- data/assets/src/ruboto/widget.rb +82 -39
- data/assets/test/src/test_helper.rb +4 -0
- data/lib/ruboto/commands/base.rb +29 -17
- data/lib/ruboto/sdk_versions.rb +1 -1
- data/lib/ruboto/util/emulator.rb +49 -33
- data/lib/ruboto/util/setup.rb +5 -1
- data/lib/ruboto/util/update.rb +68 -22
- data/lib/ruboto/util/xml_element.rb +5 -3
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/call_super_activity.rb +2 -2
- data/test/activity/constants_activity.rb +51 -0
- data/test/activity/constants_activity_test.rb +18 -0
- data/test/activity/margins_activity.rb +12 -7
- data/test/activity/margins_activity_test.rb +10 -6
- data/test/activity/padding_activity.rb +15 -0
- data/test/activity/padding_activity_test.rb +41 -0
- data/test/activity/rss_activity.rb +42 -0
- data/test/activity/rss_activity_test.rb +35 -0
- data/test/activity/spinner_activity.rb +5 -5
- data/test/activity/spinner_activity_test.rb +6 -6
- data/test/activity/stack_activity.rb +7 -8
- data/test/activity/stack_activity_test.rb +7 -5
- data/test/activity/subclass_activity.rb +5 -5
- data/test/activity/subclass_activity_test.rb +8 -6
- data/test/app_test_methods.rb +8 -0
- data/test/arjdbc_test.rb +1 -1
- data/test/minimal_app_test.rb +12 -10
- data/test/rake_test.rb +2 -4
- data/test/ruboto_gen_test.rb +11 -9
- data/test/service_block_test.rb +112 -0
- data/test/{service_test.rb → service_gen_class_test.rb} +9 -4
- data/test/service_infile_class_test.rb +114 -0
- data/test/sqldroid_test.rb +1 -1
- data/test/test_helper.rb +39 -21
- metadata +11 -7
@@ -232,9 +232,11 @@ module Ruboto
|
|
232
232
|
def service_super_guard(class_name, method_name)
|
233
233
|
if class_name == 'RubotoService'
|
234
234
|
if method_name == 'onCreate'
|
235
|
-
|
236
|
-
elsif method_name == 'onStartCommand'
|
237
|
-
|
235
|
+
"preOnCreate();\n"
|
236
|
+
elsif method_name == 'onStartCommand'
|
237
|
+
"preOnStartCommand(intent);\n"
|
238
|
+
elsif method_name == 'onBind'
|
239
|
+
"preOnBind(intent);\n"
|
238
240
|
end
|
239
241
|
end
|
240
242
|
end
|
data/lib/ruboto/version.rb
CHANGED
@@ -10,8 +10,8 @@ class CallSuperActivity
|
|
10
10
|
setTitle 'Without Super', false
|
11
11
|
|
12
12
|
self.content_view =
|
13
|
-
linear_layout :
|
14
|
-
text_view :
|
13
|
+
linear_layout orientation: :vertical, gravity: :center do
|
14
|
+
text_view id: 42, text: title, text_size: 48.0, gravity: :center
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'ruboto/widget'
|
2
|
+
|
3
|
+
ruboto_import_widgets :Button, :LinearLayout, :TextView
|
4
|
+
import android.util.TypedValue
|
5
|
+
|
6
|
+
class ConstantsActivity
|
7
|
+
def onCreate(bundle)
|
8
|
+
super
|
9
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
10
|
+
map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
11
|
+
|
12
|
+
# FIXME(uwe): Remove condition when we stop testing Android 2.3
|
13
|
+
if android.os.Build::VERSION::SDK_INT > 10
|
14
|
+
attr = android.R.attr.actionBarSize
|
15
|
+
tv = TypedValue.new
|
16
|
+
if theme.resolveAttribute(attr, tv, true)
|
17
|
+
action_bar_height = TypedValue.
|
18
|
+
complexToDimensionPixelSize(tv.data, resources.display_metrics).
|
19
|
+
inspect
|
20
|
+
else
|
21
|
+
action_bar_height = 'N/A'
|
22
|
+
end
|
23
|
+
else
|
24
|
+
action_bar_height = 'N/A'
|
25
|
+
end
|
26
|
+
# EMXIF
|
27
|
+
|
28
|
+
self.content_view = linear_layout orientation: :vertical, gravity: :center do
|
29
|
+
i = 41
|
30
|
+
|
31
|
+
text_view id: i += 1, hint: 'actionBarHeight', tag: action_bar_height, text: action_bar_height
|
32
|
+
text_view id: i += 1, hint: 'anim.fade_in', tag: '17432576', text: android.R.anim.fade_in.to_s
|
33
|
+
|
34
|
+
# FIXME(uwe): Remove condition when we stop testing Android 2.3
|
35
|
+
if android.os.Build::VERSION::SDK_INT > 10
|
36
|
+
text_view id: i += 1, hint: 'attr.actionBarSize', tag: '16843499', text: android.R.attr.actionBarSize.to_s
|
37
|
+
text_view id: i += 1, hint: 'color.holo_green', tag: '17170452', text: android.R.color.holo_green_light.to_s
|
38
|
+
end
|
39
|
+
# EMXIF
|
40
|
+
|
41
|
+
text_view id: i += 1, hint: 'id.text1', tag: '16908308', text: android.R.id.text1.to_s
|
42
|
+
text_view id: i += 1, hint: 'layout.simple_list_item1', tag: '17367043', text: android.R.layout.simple_list_item_1.to_s
|
43
|
+
text_view id: i += 1, hint: 'style::Theme_Dialog', tag: '16973835', text: android.R.style::Theme_Dialog.to_s
|
44
|
+
|
45
|
+
text_view id: i += 1, hint: 'R.attr', tag: 'Java::OrgRubotoTest_app::R::attr', text: R.attr.to_s
|
46
|
+
text_view id: i += 1, hint: 'R.layout.dummy_layout', tag: 0x7f030000.to_s, text: R.layout.dummy_layout.to_s
|
47
|
+
text_view id: i += 1, hint: 'R.layout.get_ruboto_core', tag: 0x7f030001.to_s, text: R.layout.get_ruboto_core.to_s
|
48
|
+
text_view id: i += 1, hint: 'R.id.my_text', tag: 0x7f050000.to_s, text: R.id.my_text.to_s
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
activity org.ruboto.test_app.ConstantsActivity
|
2
|
+
|
3
|
+
setup do |activity|
|
4
|
+
start = Time.now
|
5
|
+
loop do
|
6
|
+
break if activity.findViewById(42)
|
7
|
+
fail 'Text view not found.' if (Time.now - start > 60)
|
8
|
+
sleep 0.5
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
test('R inner class constants') do |activity|
|
13
|
+
layout = activity.findViewById(android.R.id.content).get_child_at(0)
|
14
|
+
layout.child_count.times do |n|
|
15
|
+
child = layout.get_child_at(n)
|
16
|
+
assert_equal child.tag, child.text, child.hint
|
17
|
+
end
|
18
|
+
end
|
@@ -5,13 +5,18 @@ ruboto_import_widgets :LinearLayout, :TextView
|
|
5
5
|
class MarginsActivity
|
6
6
|
def onCreate(bundle)
|
7
7
|
super
|
8
|
-
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
8
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
9
|
+
map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
10
|
|
10
|
-
self.content_view =
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
self.content_view = linear_layout orientation: :vertical do
|
12
|
+
@text_view_margins = text_view text: 'What hath Matz wrought?', id: 42,
|
13
|
+
margins: [100, 0, 0, 0]
|
14
|
+
@text_view_layout = text_view text: 'What hath Matz wrought?', id: 43,
|
15
|
+
layout: {set_margins: [100, 0, 0, 0]}
|
16
|
+
@text_view_layout = text_view text: 'What hath Matz wrought?', id: 44,
|
17
|
+
layout: {margins: [100, 0, 0, 0]}
|
18
|
+
@text_view_fieldset = text_view text: 'What hath Matz wrought?', id: 45,
|
19
|
+
layout: {left_margin: 100}
|
20
|
+
end
|
16
21
|
end
|
17
22
|
end
|
@@ -4,13 +4,17 @@ setup do |activity|
|
|
4
4
|
start = Time.now
|
5
5
|
loop do
|
6
6
|
@text_view_margins = activity.findViewById(42)
|
7
|
-
@
|
8
|
-
@
|
9
|
-
|
7
|
+
@text_view_layout_setter = activity.findViewById(43)
|
8
|
+
@text_view_layout_attribute_setter = activity.findViewById(44)
|
9
|
+
@text_view_fieldset = activity.findViewById(45)
|
10
|
+
break if (@text_view_margins && @text_view_layout_setter &&
|
11
|
+
@text_view_layout_attribute_setter && @text_view_fieldset) ||
|
12
|
+
(Time.now - start > 60)
|
10
13
|
sleep 1
|
11
14
|
end
|
12
15
|
assert @text_view_margins
|
13
|
-
assert @
|
16
|
+
assert @text_view_layout_setter
|
17
|
+
assert @text_view_layout_attribute_setter
|
14
18
|
assert @text_view_fieldset
|
15
19
|
end
|
16
20
|
|
@@ -18,8 +22,8 @@ def left_margin(view)
|
|
18
22
|
view.get_layout_params.leftMargin
|
19
23
|
end
|
20
24
|
|
21
|
-
%w(margins
|
22
|
-
test("margins are set through #{view_type}") do |activity|
|
25
|
+
%w(margins layout_setter layout_attribute_setter fieldset).each do |view_type|
|
26
|
+
test("margins are set through #{view_type}") do |activity|
|
23
27
|
assert_equal 100, left_margin(instance_variable_get("@text_view_#{view_type}"))
|
24
28
|
end
|
25
29
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'ruboto/widget'
|
2
|
+
|
3
|
+
ruboto_import_widgets :LinearLayout, :TextView
|
4
|
+
|
5
|
+
class PaddingActivity
|
6
|
+
def onCreate(bundle)
|
7
|
+
super
|
8
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
9
|
+
map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
10
|
+
|
11
|
+
self.content_view = linear_layout id: 41, padding: [10, 20, 30, 40] do
|
12
|
+
text_view text: 'Text with padding', id: 42, padding: [1, 2, 4, 8]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
activity Java::org.ruboto.test_app.PaddingActivity
|
2
|
+
|
3
|
+
setup do |activity|
|
4
|
+
start = Time.now
|
5
|
+
loop do
|
6
|
+
@layout = activity.findViewById(41)
|
7
|
+
@text_view = activity.findViewById(42)
|
8
|
+
break if (@layout && @text_view) || Time.now - start > 60
|
9
|
+
sleep 0.5
|
10
|
+
end
|
11
|
+
assert @layout
|
12
|
+
assert @text_view
|
13
|
+
end
|
14
|
+
|
15
|
+
test('padding is set') do |activity|
|
16
|
+
assert_equal 40, @layout.padding_bottom
|
17
|
+
|
18
|
+
# FIXME(uwe): Remove condition when we stop testing api level < 17
|
19
|
+
assert_equal(30, @layout.padding_end) if android.os.Build::VERSION::SDK_INT >= 17
|
20
|
+
|
21
|
+
assert_equal 10, @layout.padding_left
|
22
|
+
assert_equal 30, @layout.padding_right
|
23
|
+
|
24
|
+
# FIXME(uwe): Remove condition when we stop testing api level < 17
|
25
|
+
assert_equal(10, @layout.padding_start) if android.os.Build::VERSION::SDK_INT >= 17
|
26
|
+
|
27
|
+
assert_equal 20, @layout.padding_top
|
28
|
+
|
29
|
+
assert_equal 8, @text_view.padding_bottom
|
30
|
+
|
31
|
+
# FIXME(uwe): Remove condition when we stop testing api level < 17
|
32
|
+
assert_equal(4, @text_view.padding_end) if android.os.Build::VERSION::SDK_INT >= 17
|
33
|
+
|
34
|
+
assert_equal 1, @text_view.padding_left
|
35
|
+
assert_equal 4, @text_view.padding_right
|
36
|
+
|
37
|
+
# FIXME(uwe): Remove condition when we stop testing api level < 17
|
38
|
+
assert_equal(1, @text_view.padding_start) if android.os.Build::VERSION::SDK_INT >= 17
|
39
|
+
|
40
|
+
assert_equal 2, @text_view.padding_top
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'ruboto/util/stack'
|
2
|
+
require 'rss'
|
3
|
+
require 'ruboto/widget'
|
4
|
+
|
5
|
+
ruboto_import_widgets :LinearLayout, :ListView, :TextView
|
6
|
+
|
7
|
+
class RssActivity
|
8
|
+
attr_reader :list
|
9
|
+
|
10
|
+
def onCreate(bundle)
|
11
|
+
super
|
12
|
+
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').
|
13
|
+
map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
14
|
+
@list = []
|
15
|
+
self.content_view = linear_layout orientation: :vertical, gravity: :center do
|
16
|
+
@status = text_view id: 42, text: 'Activity created...'
|
17
|
+
@list_view = list_view id: 43, list: @list
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def onResume
|
22
|
+
super
|
23
|
+
@status.text = 'Resuming activity...'
|
24
|
+
Thread.with_large_stack do
|
25
|
+
begin
|
26
|
+
run_on_ui_thread { @status.text = 'Started update thread...' }
|
27
|
+
subjects = []
|
28
|
+
rss = RSS::Parser.parse('http://www.feedforall.com/sample.xml')
|
29
|
+
rss.items.each do |item|
|
30
|
+
subject = item.title.to_s
|
31
|
+
subjects << subject
|
32
|
+
end
|
33
|
+
run_on_ui_thread { @list_view.adapter.add_all subjects }
|
34
|
+
run_on_ui_thread { @status.text = 'List updated' }
|
35
|
+
rescue Exception
|
36
|
+
msg = "#{$!.message}\n#{$!.backtrace.join("\n")}"
|
37
|
+
run_on_ui_thread { @status.text = "Thread: Exception: #{msg}" }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
@status.text = 'Resume...OK'
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
activity org.ruboto.test_app.RssActivity
|
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 && @list_view
|
12
|
+
end
|
13
|
+
|
14
|
+
test('fetch rss feed', ui: false) do |activity|
|
15
|
+
start = Time.now
|
16
|
+
loop do
|
17
|
+
break if activity.findViewById(42).text.to_s == 'List updated'
|
18
|
+
break if Time.now - start > 90
|
19
|
+
sleep 0.5
|
20
|
+
end
|
21
|
+
assert_equal 'List updated', activity.findViewById(42).text.to_s
|
22
|
+
# assert_equal [],activity.findViewById(43).adapter.list.to_a
|
23
|
+
assert_equal [
|
24
|
+
"RSS Solutions for Restaurants",
|
25
|
+
"RSS Solutions for Schools and Colleges",
|
26
|
+
"RSS Solutions for Computer Service Companies",
|
27
|
+
"RSS Solutions for Governments",
|
28
|
+
"RSS Solutions for Politicians",
|
29
|
+
"RSS Solutions for Meteorologists",
|
30
|
+
"RSS Solutions for Realtors & Real Estate Firms",
|
31
|
+
"RSS Solutions for Banks / Mortgage Companies",
|
32
|
+
"RSS Solutions for Law Enforcement"
|
33
|
+
],
|
34
|
+
activity.list
|
35
|
+
end
|
@@ -17,7 +17,7 @@ class SpinnerActivity
|
|
17
17
|
spinner :layout => {:width => :match_parent}, :id => 42
|
18
18
|
plain_spinner = spinner :layout => {:width => :match_parent}, :id => 43,
|
19
19
|
:on_item_selected_listener => click_handler
|
20
|
-
plain_spinner.adapter = android.widget.ArrayAdapter.new(self, R::layout::simple_spinner_item)
|
20
|
+
plain_spinner.adapter = android.widget.ArrayAdapter.new(self, android.R::layout::simple_spinner_item)
|
21
21
|
|
22
22
|
# FIXME(uwe): Simplify when we stop supporting Android < 4.0.3
|
23
23
|
if android.os.Build::VERSION::SDK_INT < 11
|
@@ -31,19 +31,19 @@ class SpinnerActivity
|
|
31
31
|
|
32
32
|
spinner :layout => {:width => :match_parent}, :id => 44,
|
33
33
|
:on_item_selected_listener => click_handler,
|
34
|
-
:adapter => android.widget.ArrayAdapter.new(self, R::layout::simple_spinner_item, ['Adapter Spinner', 'Adapter Item'])
|
34
|
+
:adapter => android.widget.ArrayAdapter.new(self, android.R::layout::simple_spinner_item, ['Adapter Spinner', 'Adapter Item'])
|
35
35
|
spinner :layout => {:width => :match_parent}, :id => 45 ,
|
36
36
|
:on_item_selected_listener => click_handler,
|
37
37
|
:list => ['List Spinner', 'List Item']
|
38
38
|
spinner :layout => {:width => :match_parent}, :id => 46 ,
|
39
39
|
:on_item_selected_listener => click_handler,
|
40
40
|
:list => ['List Spinner', 'List Item'],
|
41
|
-
:item_layout => R::layout::simple_spinner_dropdown_item
|
41
|
+
:item_layout => android.R::layout::simple_spinner_dropdown_item
|
42
42
|
spinner :layout => {:width => :match_parent}, :id => 47 ,
|
43
43
|
:on_item_selected_listener => click_handler,
|
44
44
|
:list => ['List Spinner', 'List Item'],
|
45
|
-
:item_layout => R::layout::simple_spinner_dropdown_item,
|
46
|
-
:dropdown_layout => R::layout::simple_spinner_item
|
45
|
+
:item_layout => android.R::layout::simple_spinner_dropdown_item,
|
46
|
+
:dropdown_layout => android.R::layout::simple_spinner_item
|
47
47
|
@text_view = text_view :text => 'Spinning?', :id => 69,
|
48
48
|
:layout => {:width => :match_parent},
|
49
49
|
:gravity => :center, :text_size => 48.0
|
@@ -33,18 +33,18 @@ end
|
|
33
33
|
test('list spinner view resources') do |activity|
|
34
34
|
activity.run_on_ui_thread do
|
35
35
|
spinner = activity.findViewById(45)
|
36
|
-
assert_equal R::layout::simple_spinner_item, spinner.adapter.mResource
|
37
|
-
assert_equal R::layout::simple_spinner_item, spinner.adapter.mDropDownResource
|
36
|
+
assert_equal android.R::layout::simple_spinner_item, spinner.adapter.mResource
|
37
|
+
assert_equal android.R::layout::simple_spinner_item, spinner.adapter.mDropDownResource
|
38
38
|
assert_equal 0, spinner.adapter.mFieldId
|
39
39
|
|
40
40
|
spinner = activity.findViewById(46)
|
41
|
-
assert_equal R::layout::simple_spinner_dropdown_item, spinner.adapter.mResource
|
42
|
-
assert_equal R::layout::simple_spinner_dropdown_item, spinner.adapter.mDropDownResource
|
41
|
+
assert_equal android.R::layout::simple_spinner_dropdown_item, spinner.adapter.mResource
|
42
|
+
assert_equal android.R::layout::simple_spinner_dropdown_item, spinner.adapter.mDropDownResource
|
43
43
|
assert_equal 0, spinner.adapter.mFieldId
|
44
44
|
|
45
45
|
spinner = activity.findViewById(47)
|
46
|
-
assert_equal R::layout::simple_spinner_dropdown_item, spinner.adapter.mResource
|
47
|
-
assert_equal R::layout::simple_spinner_item, spinner.adapter.mDropDownResource
|
46
|
+
assert_equal android.R::layout::simple_spinner_dropdown_item, spinner.adapter.mResource
|
47
|
+
assert_equal android.R::layout::simple_spinner_item, spinner.adapter.mDropDownResource
|
48
48
|
assert_equal 0, spinner.adapter.mFieldId
|
49
49
|
end
|
50
50
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
STACK_DEPTH_SCRIPT = java.lang.Thread.current_thread.stack_trace.length.to_s
|
2
2
|
|
3
|
-
raise "Stack level: #{STACK_DEPTH_SCRIPT}" rescue puts $!.backtrace.join("\n")
|
4
|
-
|
5
3
|
require 'ruboto/widget'
|
6
4
|
|
7
5
|
ruboto_import_widgets :Button, :LinearLayout, :TextView
|
@@ -11,15 +9,16 @@ class StackActivity
|
|
11
9
|
def onCreate(bundle)
|
12
10
|
stack_depth_on_create = java.lang.Thread.current_thread.stack_trace.length.to_s
|
13
11
|
super
|
14
|
-
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
12
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').
|
13
|
+
map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
15
14
|
|
16
15
|
self.content_view =
|
17
|
-
linear_layout :
|
16
|
+
linear_layout orientation: :vertical, gravity: :center do
|
18
17
|
stack_depth_linear_layout = java.lang.Thread.current_thread.stack_trace.length.to_s
|
19
|
-
text_view :
|
20
|
-
text_view :
|
21
|
-
text_view :
|
22
|
-
text_view :
|
18
|
+
text_view id: 42, text: STACK_DEPTH_SCRIPT, text_size: 48.0, gravity: :center
|
19
|
+
text_view id: 43, text: STACK_DEPTH_CLASS, text_size: 48.0, gravity: :center
|
20
|
+
text_view id: 44, text: stack_depth_on_create, text_size: 48.0, gravity: :center
|
21
|
+
text_view id: 45, text: stack_depth_linear_layout, text_size: 48.0, gravity: :center
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -10,15 +10,17 @@ setup do |activity|
|
|
10
10
|
assert @text_view
|
11
11
|
end
|
12
12
|
|
13
|
-
# ANDROID: 10, PLATFORM: 0.5.3, JRuby: 1.7.3
|
14
|
-
# ANDROID: 10, PLATFORM: 0.5.4, JRuby: 1.7.3
|
15
|
-
# ANDROID:
|
16
|
-
# ANDROID: 16, PLATFORM: 0.6
|
17
|
-
# ANDROID:
|
13
|
+
# ANDROID: 10, PLATFORM: 0.5.3, JRuby: 1.7.3 '[28, 33, 46, 63]' expected, but got '[43, 48, 45, 62]'
|
14
|
+
# ANDROID: 10, PLATFORM: 0.5.4, JRuby: 1.7.3 '[28, 33, 45, 62]' expected, but got '[28, 33, 44, 61]'
|
15
|
+
# ANDROID: 15, PLATFORM: STANDALONE, JRuby: 1.7.0 '[28, 33, 51, 68]' expected, but got '[28, 33, 47, 64]'
|
16
|
+
# ANDROID: 16, PLATFORM: 0.5.6, JRuby: 1.7.3 '[28, 33, 45, 62]' expected, but got '[28, 33, 44, 61]'
|
17
|
+
# ANDROID: 16, PLATFORM: 0.6.0, JRuby: 9000.dev '[28, 33, 45, 62]' expected, but got '[28, 33, 45, 63]'
|
18
|
+
# ANDROID: 20, PLATFORM: 1.0.2, JRuby: 1.7.12 '[28, 33, 44, 61]' expected, but got '[28, 33, 43, 60]'
|
18
19
|
test('stack depth') do |activity|
|
19
20
|
os_offset = {
|
20
21
|
10 => [0, 0, -1, -1],
|
21
22
|
13 => [1, 1, 0, 0],
|
23
|
+
20 => [0, 0, -1, -1],
|
22
24
|
}[android.os.Build::VERSION::SDK_INT] || [0, 0, 0, 0]
|
23
25
|
jruby_offset = {
|
24
26
|
/^1\.7/ => [0, 0, 0, -1],
|
@@ -16,7 +16,7 @@ class SubclassOfArrayAdapter < Java::AndroidWidget::ArrayAdapter
|
|
16
16
|
end
|
17
17
|
|
18
18
|
class Java::AndroidWidget::ArrayAdapter
|
19
|
-
|
19
|
+
field_reader :mResource, :mFieldId
|
20
20
|
end
|
21
21
|
|
22
22
|
class SubclassActivity
|
@@ -24,13 +24,13 @@ class SubclassActivity
|
|
24
24
|
super
|
25
25
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
26
26
|
|
27
|
-
adapter = SubclassOfArrayAdapter.new(self, android.R.layout.simple_list_item_1,
|
27
|
+
adapter = SubclassOfArrayAdapter.new(self, android.R.layout.simple_list_item_1, android.R.id.text1, ['Record one', 'Record two'])
|
28
28
|
|
29
29
|
self.content_view =
|
30
30
|
linear_layout :orientation => LinearLayout::VERTICAL do
|
31
|
-
@text_view = text_view :
|
32
|
-
@list_view = list_view :
|
33
|
-
:
|
31
|
+
@text_view = text_view text: 'What hath Matz wrought?', id: 42
|
32
|
+
@list_view = list_view adapter: adapter, id: 43,
|
33
|
+
on_item_click_listener: ->(_, view, _, _) { @text_view.text = view.findViewById(android.R.id.text1).text }
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|