ruboto 1.1.2 → 1.2.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.
- 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
|