kolach-melomel 0.6.4

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.
@@ -0,0 +1,71 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), *%w[helper])
2
+
3
+ class IntegrationTestCase < RunnerTestCase
4
+ def setup
5
+ start_runner
6
+ Melomel.connect()
7
+ end
8
+
9
+ def teardown
10
+ stop_runner
11
+ end
12
+
13
+ def test_should_get_application_name
14
+ app = Melomel.get_class('mx.core.FlexGlobals')
15
+ assert_equal 'Melomel Runner', app.topLevelApplication.name
16
+ end
17
+
18
+ def test_should_get_property
19
+ runner = Melomel.get_class('MelomelRunner')
20
+ assert_equal 'bar', runner.foo
21
+ end
22
+
23
+ def test_should_get_missing_property_as_nil
24
+ app = Melomel.get_class('mx.core.FlexGlobals').topLevelApplication
25
+ assert_nil app.no_such_property
26
+ end
27
+
28
+ def test_should_throw_error_when_getting_missing_instance_property!
29
+ app = Melomel.get_class('mx.core.FlexGlobals').topLevelApplication
30
+ assert_raises Melomel::Error do
31
+ app.no_such_property!
32
+ end
33
+ end
34
+
35
+ def test_should_throw_error_when_getting_missing_static_property!
36
+ runner = Melomel.get_class('MelomelRunner')
37
+ assert_raises Melomel::Error do
38
+ runner.no_such_property!
39
+ end
40
+ end
41
+
42
+ # Tests the ability for a get_property to call a no-arg method if unavailable.
43
+ def test_should_get_property_passthrough
44
+ app = Melomel.get_class('mx.core.FlexGlobals').topLevelApplication
45
+ assert_equal 'ok', app.test()
46
+ end
47
+
48
+ def test_should_set_property
49
+ runner = Melomel.get_class('MelomelRunner')
50
+ runner.name = 'Susy'
51
+ assert_equal 'Susy', runner.name
52
+ runner.name = 'John'
53
+ end
54
+
55
+ def test_should_invoke_method
56
+ runner = Melomel.get_class('MelomelRunner')
57
+ assert_equal 'Hello, John', runner.hello('John')
58
+ end
59
+
60
+ def test_should_create_object
61
+ point = Melomel.create_object('flash.geom.Point')
62
+ point.x = 30
63
+ point.y = 40
64
+ assert_equal 50, point.length
65
+ end
66
+
67
+ def test_should_invoke_function
68
+ result = Melomel.invoke_function('flash.utils.getQualifiedClassName', 'Some string.')
69
+ assert_equal 'String', result
70
+ end
71
+ end
@@ -0,0 +1,109 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), *%w[helper])
2
+
3
+ class MessagingTestCase < MiniTest::Unit::TestCase
4
+ def setup
5
+ @bridge = Melomel::Bridge.new('localhost', 10101)
6
+ end
7
+
8
+
9
+ #############################################################################
10
+ #
11
+ # Message Parsing
12
+ #
13
+ #############################################################################
14
+
15
+ def test_should_parse_null
16
+ message = '<return dataType="null"/>'
17
+ assert_nil @bridge.parse_message_value(Nokogiri::XML(message).root)
18
+ end
19
+
20
+ def test_should_parse_integer
21
+ message = '<return value="12" dataType="int"/>'
22
+ assert_equal 12, @bridge.parse_message_value(Nokogiri::XML(message).root)
23
+ end
24
+
25
+ def test_should_parse_float
26
+ message = '<return value="100.12" dataType="float"/>'
27
+ assert_equal 100.12, @bridge.parse_message_value(Nokogiri::XML(message).root)
28
+ end
29
+
30
+ def test_should_parse_boolean_true
31
+ message = '<return value="true" dataType="boolean"/>'
32
+ assert_equal true, @bridge.parse_message_value(Nokogiri::XML(message).root)
33
+ end
34
+
35
+ def test_should_parse_boolean_false
36
+ message = '<return value="false" dataType="boolean"/>'
37
+ assert_equal false, @bridge.parse_message_value(Nokogiri::XML(message).root)
38
+ end
39
+
40
+ def test_should_parse_string
41
+ message = '<return value="foo" dataType="string"/>'
42
+ assert_equal 'foo', @bridge.parse_message_value(Nokogiri::XML(message).root)
43
+ end
44
+
45
+ def test_should_parse_object_proxy
46
+ message = '<return value="123" dataType="object"/>'
47
+ proxy = @bridge.parse_message_value(Nokogiri::XML(message).root)
48
+ assert_instance_of Melomel::ObjectProxy, proxy
49
+ assert_equal 123, proxy.proxy_id
50
+ assert_equal @bridge, proxy.bridge
51
+ end
52
+
53
+ def test_should_throw_error_parsing_unknown_type
54
+ message = '<return value="foo" dataType="unknown_type"/>'
55
+ assert_raises Melomel::UnrecognizedTypeError do
56
+ @bridge.parse_message_value(Nokogiri::XML(message).root)
57
+ end
58
+ end
59
+
60
+
61
+ #############################################################################
62
+ #
63
+ # Message Formatting
64
+ #
65
+ #############################################################################
66
+
67
+ def test_should_format_nil
68
+ xml = Nokogiri::XML('<root/>').root
69
+ @bridge.format_message_value(xml, nil)
70
+ assert_equal '<root dataType="null"/>', xml.to_s
71
+ end
72
+
73
+ def test_should_format_integer
74
+ xml = Nokogiri::XML('<root/>').root
75
+ @bridge.format_message_value(xml, 12)
76
+ assert_equal '<root value="12" dataType="int"/>', xml.to_s
77
+ end
78
+
79
+ def should_format_float
80
+ xml = Nokogiri::XML('<root/>').root
81
+ @bridge.format_message_value(xml, 100.12)
82
+ assert_equal '<root value="100.12" dataType="float"/>', xml.to_s
83
+ end
84
+
85
+ def test_should_format_boolean_true
86
+ xml = Nokogiri::XML('<root/>').root
87
+ @bridge.format_message_value(xml, true)
88
+ assert_equal '<root value="true" dataType="boolean"/>', xml.to_s
89
+ end
90
+
91
+ def test_should_format_boolean_false
92
+ xml = Nokogiri::XML('<root/>').root
93
+ @bridge.format_message_value(xml, false)
94
+ assert_equal '<root value="false" dataType="boolean"/>', xml.to_s
95
+ end
96
+
97
+ def test_should_format_string
98
+ xml = Nokogiri::XML('<root/>').root
99
+ @bridge.format_message_value(xml, 'foo')
100
+ assert_equal '<root value="foo" dataType="string"/>', xml.to_s
101
+ end
102
+
103
+ def test_should_format_object
104
+ proxy = Melomel::ObjectProxy.new(@bridge, 123)
105
+ xml = Nokogiri::XML('<root/>').root
106
+ @bridge.format_message_value(xml, proxy)
107
+ assert_equal '<root value="123" dataType="object"/>', xml.to_s
108
+ end
109
+ end
@@ -0,0 +1,43 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), *%w[helper])
2
+
3
+ class ObjectProxyTestCase < MiniTest::Unit::TestCase
4
+ def setup
5
+ @bridge = mock()
6
+ @proxy = Melomel::ObjectProxy.new(@bridge, 123)
7
+ end
8
+
9
+ def test_should_delegate_to_bridge_to_retrieve_property
10
+ @bridge.expects(:get_property).with(123, 'foo')
11
+ @proxy.get_property('foo')
12
+ end
13
+
14
+ def test_should_delegate_to_bridge_to_set_property
15
+ @bridge.expects(:set_property).with(123, 'foo', 'bar')
16
+ @proxy.set_property('foo', 'bar')
17
+ end
18
+
19
+ def test_should_delegate_to_bridge_to_invoke_method
20
+ @bridge.expects(:invoke_method).with(123, 'foo', 'bar', 'baz')
21
+ @proxy.invoke_method('foo', 'bar', 'baz')
22
+ end
23
+
24
+ def test_should_alias_invoke_to_invoke_method
25
+ @bridge.expects(:invoke_method).with(123, 'foo')
26
+ @proxy.invoke('foo')
27
+ end
28
+
29
+ def test_should_alias_accessors_to_get_property_method
30
+ @proxy.expects(:get_property).with('foo')
31
+ @proxy.foo
32
+ end
33
+
34
+ def test_should_alias_mutators_to_set_property_method
35
+ @proxy.expects(:set_property).with('foo', 'bar')
36
+ @proxy.foo = 'bar'
37
+ end
38
+
39
+ def test_should_alias_methods_with_arguments_to_invoke_method
40
+ @proxy.expects(:invoke_method).with('foo', 'bar', 'baz')
41
+ @proxy.foo('bar', 'baz')
42
+ end
43
+ end
data/test/test_ui.rb ADDED
@@ -0,0 +1,59 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), *%w[helper])
2
+
3
+ class IntegrationTestCase < RunnerTestCase
4
+ def setup
5
+ start_runner
6
+ Melomel.connect()
7
+ end
8
+
9
+ def teardown
10
+ stop_runner
11
+ end
12
+
13
+ def test_should_find_list_of_labels_named_foo
14
+ labels = Melomel.find_all('spark.components.Label', :name => 'foo')
15
+ assert_equal 3, labels.length
16
+ end
17
+
18
+ def should_find_text_input
19
+ text_input = Melomel.find('spark.components.TextInput', :id => 'nameTextInput')
20
+ assert_equal 'nameTextField', text_input.name
21
+ end
22
+
23
+
24
+ def test_should_click_button
25
+ button = Melomel.find('spark.components.Button', :id => 'clickButton')
26
+ label = Melomel.find('spark.components.Label', :id => 'clickLabel')
27
+ Melomel.click(button)
28
+ assert_equal 'Hello!', label.text
29
+ end
30
+
31
+ def test_should_double_click_the_button
32
+ button = Melomel.find('spark.components.Button', :id => 'doubleClickButton')
33
+ label = Melomel.find('spark.components.Label', :id => 'doubleClickLabel')
34
+ Melomel.double_click(button)
35
+ assert_equal 'Hello Hello!', label.text
36
+ end
37
+
38
+
39
+ def test_should_press_key_down
40
+ text_input = Melomel.find('spark.components.TextInput', :id => 'keyDownTextInput')
41
+ label = Melomel.find('spark.components.Label', :id => 'keyDownLabel')
42
+ Melomel.key_down(text_input, 'a')
43
+ assert_equal 'a', label.text
44
+ end
45
+
46
+ def test_should_release_key_up
47
+ text_input = Melomel.find('spark.components.TextInput', :id => 'keyUpTextInput')
48
+ label = Melomel.find('spark.components.Label', :id => 'keyUpLabel')
49
+ Melomel.key_up(text_input, 'b')
50
+ assert_equal 'b', label.text
51
+ end
52
+
53
+ def test_should_press_key
54
+ text_input = Melomel.find('spark.components.TextInput', :id => 'keyPressTextInput')
55
+ label = Melomel.find('spark.components.Label', :id => 'keyPressLabel')
56
+ Melomel.key_press(text_input, 'a')
57
+ assert_equal 'du', label.text
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kolach-melomel
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 6
9
+ - 4
10
+ version: 0.6.4
11
+ platform: ruby
12
+ authors:
13
+ - Ben Johnson, nick chistyakov
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-16 00:00:00 +03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 1
28
+ segments:
29
+ - 1
30
+ - 4
31
+ - 3
32
+ version: 1.4.3
33
+ name: nokogiri
34
+ requirement: *id001
35
+ prerelease: false
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 11
44
+ segments:
45
+ - 1
46
+ - 7
47
+ - 0
48
+ version: 1.7.0
49
+ name: minitest
50
+ requirement: *id002
51
+ prerelease: false
52
+ type: :development
53
+ - !ruby/object:Gem::Dependency
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 43
60
+ segments:
61
+ - 0
62
+ - 9
63
+ - 8
64
+ version: 0.9.8
65
+ name: mocha
66
+ requirement: *id003
67
+ prerelease: false
68
+ type: :development
69
+ description:
70
+ email:
71
+ - chikolad@gmail.com
72
+ executables: []
73
+
74
+ extensions: []
75
+
76
+ extra_rdoc_files: []
77
+
78
+ files:
79
+ - lib/melomel/bridge/messaging.rb
80
+ - lib/melomel/bridge/ui.rb
81
+ - lib/melomel/bridge.rb
82
+ - lib/melomel/cucumber/alert_steps.rb
83
+ - lib/melomel/cucumber/button_steps.rb
84
+ - lib/melomel/cucumber/color_picker_steps.rb
85
+ - lib/melomel/cucumber/data_grid_steps.rb
86
+ - lib/melomel/cucumber/date_steps.rb
87
+ - lib/melomel/cucumber/list_steps.rb
88
+ - lib/melomel/cucumber/slider_steps.rb
89
+ - lib/melomel/cucumber/text_steps.rb
90
+ - lib/melomel/cucumber.rb
91
+ - lib/melomel/date.rb
92
+ - lib/melomel/error.rb
93
+ - lib/melomel/flex.rb
94
+ - lib/melomel/object_proxy.rb
95
+ - lib/melomel/version.rb
96
+ - lib/melomel.rb
97
+ - lib/object.rb
98
+ - README.md
99
+ - CHANGELOG
100
+ - test/helper.rb
101
+ - test/sandbox.rb
102
+ - test/test_bridge.rb
103
+ - test/test_integration.rb
104
+ - test/test_messaging.rb
105
+ - test/test_object_proxy.rb
106
+ - test/test_ui.rb
107
+ has_rdoc: true
108
+ homepage: http://github.com/kolach/melomel.rb
109
+ licenses: []
110
+
111
+ post_install_message:
112
+ rdoc_options: []
113
+
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ requirements: []
135
+
136
+ rubyforge_project:
137
+ rubygems_version: 1.3.7
138
+ signing_key:
139
+ specification_version: 3
140
+ summary: A Fork of Ben Johnson Ruby interface to Melomel
141
+ test_files:
142
+ - test/helper.rb
143
+ - test/sandbox.rb
144
+ - test/test_bridge.rb
145
+ - test/test_integration.rb
146
+ - test/test_messaging.rb
147
+ - test/test_object_proxy.rb
148
+ - test/test_ui.rb