testability-driver-qt-sut-plugin 0.9.2

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.
Files changed (61) hide show
  1. data/env.rb +26 -0
  2. data/installer/extconf.rb +62 -0
  3. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin.rb +23 -0
  4. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/action.rb +156 -0
  5. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/application.rb +318 -0
  6. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/attribute.rb +227 -0
  7. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/behaviour.rb +140 -0
  8. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/configure_behaviour.rb +317 -0
  9. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/events.rb +165 -0
  10. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/file_transfer.rb +333 -0
  11. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/find.rb +80 -0
  12. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/fixture.rb +178 -0
  13. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/gesture.rb +906 -0
  14. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/infologger.rb +604 -0
  15. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/key_press.rb +152 -0
  16. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/locale_db.rb +151 -0
  17. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/method.rb +85 -0
  18. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/multitouch.rb +455 -0
  19. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/os.rb +100 -0
  20. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/qt_api_method.rb +148 -0
  21. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/record.rb +124 -0
  22. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb +283 -0
  23. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/sut.rb +492 -0
  24. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/synchronization.rb +113 -0
  25. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/treewidgetitemcolumn.rb +93 -0
  26. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/type_text.rb +97 -0
  27. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/view_item.rb +97 -0
  28. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/webkit.rb +230 -0
  29. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/widget.rb +663 -0
  30. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/action.rb +30 -0
  31. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/configure_command.rb +38 -0
  32. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/drag.rb +44 -0
  33. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/find_object.rb +50 -0
  34. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/fixture.rb +45 -0
  35. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/group.rb +48 -0
  36. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/infologger_command.rb +38 -0
  37. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/qt.rb +170 -0
  38. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/tap.rb +54 -0
  39. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/widget.rb +226 -0
  40. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/application.rb +264 -0
  41. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/configure_command.rb +60 -0
  42. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/find_object.rb +114 -0
  43. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/fixture.rb +67 -0
  44. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/group.rb +52 -0
  45. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/infologger_command.rb +62 -0
  46. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/key_sequence.rb +99 -0
  47. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/screen_capture.rb +54 -0
  48. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/tap.rb +51 -0
  49. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/widget.rb +72 -0
  50. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/plugin.rb +119 -0
  51. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/adapter.rb +225 -0
  52. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/communication.rb +154 -0
  53. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/controller.rb +58 -0
  54. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/fixture_parameter.rb +77 -0
  55. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/widget.rb +82 -0
  56. data/lib/testability-driver-qt-sut-plugin.rb +24 -0
  57. data/xml/behaviour/qt.xml +717 -0
  58. data/xml/defaults/sut_qt.xml +9 -0
  59. data/xml/keymap/qt.xml +321 -0
  60. data/xml/template/qt.xml +124 -0
  61. metadata +141 -0
@@ -0,0 +1,60 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module ConfigureCommand
25
+
26
+ # Execute the command
27
+ # Sends the message to the device using the @sut_adapter (see base class)
28
+ # == params
29
+ # == returns
30
+ # == raises
31
+ # NotImplementedError: raised if unsupported command type
32
+ def execute
33
+
34
+ @sut_adapter.send_service_request(
35
+ Comms::MessageGenerator.generate(
36
+ Nokogiri::XML::Builder.new{
37
+ TasCommands( :service => "confService", :id=> application_id ) {
38
+ Target( :TasId => "Application" ) {
39
+ Command( value || "", ( params || {} ).merge( :name => name ) )
40
+ }
41
+ }
42
+ }.to_xml
43
+ )
44
+ )
45
+
46
+ end
47
+
48
+ def set_adapter( adapter )
49
+ @sut_adapter = adapter
50
+ end
51
+
52
+ # enable hooking for performance measurement & debug logging
53
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
54
+
55
+ end #module ConfigureCommand
56
+
57
+ end #module QT
58
+
59
+ end #module MobyController
60
+
@@ -0,0 +1,114 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module FindObjectCommand
25
+
26
+ # Execute the command
27
+ # Sends the message to the device using the @sut_adapter (see base class)
28
+ # == params
29
+ # == returns
30
+ # == raises
31
+ # NotImplementedError: raised if unsupported command type
32
+ def execute
33
+ filters = make_params if MobyUtil::Parameter[ @_sut.id ][ :filter_type, 'none' ] == 'dynamic'
34
+
35
+ params = search_parameters
36
+
37
+ builder = Nokogiri::XML::Builder.new do |xml|
38
+ xml.TasCommands( ( application_details || {} ).merge( :service => "findObject") ) {
39
+ xml.Target{
40
+ add_objects(xml, params)
41
+ xml.Command( :name => 'findObject' ){
42
+ filters.collect{ | name, value |
43
+ xml.param( :name => name, :value => value )
44
+ }
45
+ } if MobyUtil::Parameter[ @_sut.id ][ :filter_type, 'none' ] == 'dynamic'
46
+ } if params and params.size > 0
47
+ }
48
+ end
49
+ msg = builder.to_xml
50
+ #puts msg.to_s
51
+
52
+ @sut_adapter.send_service_request(Comms::MessageGenerator.generate(msg), true)
53
+
54
+ end
55
+
56
+ def set_adapter( adapter )
57
+ @sut_adapter = adapter
58
+ end
59
+
60
+ private
61
+
62
+ def add_objects(builder, params)
63
+ parent = builder.parent
64
+ params.each{|objectParams| parent = create_object_node(builder, objectParams, parent)}
65
+ end
66
+
67
+ def create_object_node(builder, params, parent)
68
+ node = Nokogiri::XML::Node.new('object', builder.doc)
69
+ params.keys.each{|key| node[key.to_s] = params[key].to_s}
70
+ parent.add_child(node)
71
+ end
72
+
73
+
74
+ def make_params
75
+ params = {}
76
+
77
+ # get sut paramteres only once, store to local variable
78
+ sut_parameters = MobyUtil::Parameter[ @_sut.id ]
79
+
80
+ params[ 'filterProperties' ] = $last_parameter if sut_parameters[ :filter_properties, nil ]
81
+ params[ 'pluginBlackList' ] = $last_parameter if sut_parameters[ :plugin_blacklist, nil ]
82
+ params[ 'pluginWhiteList' ] = $last_parameter if sut_parameters[ :plugin_whitelist, nil ]
83
+
84
+ case sut_parameters[ :filter_type, 'none' ]
85
+
86
+ when 'dynamic'
87
+
88
+ # updates the filter with the current backtrace file list
89
+ MobyUtil::DynamicAttributeFilter.instance.update_filter( caller( 0 ) )
90
+
91
+ white_list = MobyUtil::DynamicAttributeFilter.instance.filter_string
92
+ params['attributeWhiteList'] = white_list if white_list
93
+
94
+ when 'static'
95
+
96
+ params['attributeBlackList'] = $last_parameter if sut_parameters[ :attribute_blacklist, nil ]
97
+ params['attributeWhiteList'] = $last_parameter if sut_parameters[ :attribute_whitelist, nil ]
98
+
99
+ end
100
+
101
+ params
102
+
103
+ end
104
+
105
+
106
+ # enable hooking for performance measurement & debug logging
107
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
108
+
109
+ end #module FindObjectCommand
110
+
111
+ end #module QT
112
+
113
+ end #module MobyController
114
+
@@ -0,0 +1,67 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module Fixture
25
+
26
+ # Execute the command
27
+ # Sends the message to the device using the @sut_adapter (see base class)
28
+ # == params
29
+ # == returns
30
+ # == raises
31
+ # NotImplementedError: raised if unsupported command type
32
+ def execute
33
+
34
+ Kernel::raise ArgumentError.new( "Fixture '%s' not found for sut id '%s'" % [ @name, @sut_adapter.sut_id ] ) if ( fixture_plugin = MobyUtil::Parameter[ @sut_adapter.sut_id.to_sym ][ :fixtures ][ @name.to_sym, nil ] ).nil?
35
+
36
+
37
+ @sut_adapter.send_service_request(
38
+ Comms::MessageGenerator.generate(
39
+ Nokogiri::XML::Builder.new{
40
+ TasCommands( :id => @context.application_id, :transitions => @context.transitions, :service => "fixture", :async => @context.asynchronous ) {
41
+ Target( :TasId => @context.object_id, :type => @context.object_type ) {
42
+ Command( :name => "Fixture", :plugin => fixture_plugin, :method => @context.command ) {
43
+ @context.params.collect{ | name, value |
44
+ param( :name => name, :value => value )
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }.to_xml
50
+ )
51
+ )
52
+
53
+ end
54
+
55
+ def set_adapter( adapter )
56
+ @sut_adapter = adapter
57
+ end
58
+
59
+ # enable hooking for performance measurement & debug logging
60
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
61
+
62
+
63
+ end # Fixture
64
+
65
+ end #module QT
66
+
67
+ end #module MobyController
@@ -0,0 +1,52 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module Group
25
+
26
+ # Execute the command).
27
+ # Sends the message to the device using the @sut_adapter (see base class)
28
+ # == params
29
+ # == returns
30
+ # == raises
31
+ # NotImplementedError: raised if unsupported command type
32
+ def execute
33
+ builder = Nokogiri::XML::Builder.new{
34
+ TasCommands( :id=> application.id.to_s, :transitions => 'true', :service => 'uiCommand', :interval => interval.to_s, :multitouch => multitouch.to_s)
35
+ }
36
+ @sut_adapter.set_message_builder(builder)
37
+ block.call
38
+ @sut_adapter.send_grouped_request
39
+ end
40
+
41
+ def set_adapter( adapter )
42
+ @sut_adapter = adapter
43
+ end
44
+
45
+ # enable hooking for performance measurement & debug logging
46
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
47
+
48
+ end #module Group
49
+
50
+ end #module QT
51
+
52
+ end #module MobyController
@@ -0,0 +1,62 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module InfoLoggerCommand
25
+
26
+ # Execute the command
27
+ # Sends the message to the device using the @sut_adapter (see base class)
28
+ # == params
29
+ # == returns
30
+ # == raises
31
+ # NotImplementedError: raised if unsupported command type
32
+ def execute
33
+
34
+ @sut_adapter.send_service_request(
35
+ Comms::MessageGenerator.generate(
36
+ Nokogiri::XML::Builder.new{
37
+ TasCommands( :service => "infoService", :id=> application_id, :interval => params[:interval] ) {
38
+ Target( :TasId => "Application" ) {
39
+ Command( value || "", ( params || {} ).merge( :name => name ) )
40
+ }
41
+ }
42
+ }.to_xml
43
+ )
44
+ )
45
+
46
+ end
47
+
48
+ def set_adapter( adapter )
49
+
50
+ @sut_adapter = adapter
51
+
52
+ end
53
+
54
+ # enable hooking for performance measurement & debug logging
55
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
56
+
57
+
58
+ end # InfoLoggerCommand
59
+
60
+ end #module QT
61
+
62
+ end #module MobyController
@@ -0,0 +1,99 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyController
21
+
22
+ module QT
23
+
24
+ module KeySequence
25
+
26
+ def set_adapter( adapter )
27
+ @sut_adapter = adapter
28
+ end
29
+
30
+ # Execute the command(s). Iterated trough the @message_array and sends all
31
+ # message to the device using the @sut_adapter (see base class)
32
+ # == params
33
+ # == returns
34
+ # == raises
35
+ # RuntimeError: No service request to be sent due to key sequence is empty
36
+ def execute
37
+ message = Comms::MessageGenerator.generate(make_message)
38
+ @sut_adapter.send_service_request( message )
39
+ end
40
+
41
+ private
42
+ #
43
+ # Internal message generation method. Makes xml messages from the command_data
44
+ # == params
45
+ # none
46
+ def make_message
47
+
48
+ press_types = { :KeyDown => 'KeyPress', :KeyUp => 'KeyRelease' }
49
+
50
+ sut = @_sut
51
+ sequence = @sequence
52
+
53
+ message = Nokogiri::XML::Builder.new{
54
+
55
+ TasCommands( :id => sut.application.id, :transitions => 'true', :service => 'uiCommand' ){
56
+
57
+ Target( :TasId => 'FOCUSWIDGET', :type => 'Standard' ){
58
+
59
+ sequence.each{ | key_press |
60
+
61
+ key_press[ :value ].tap{ | key |
62
+
63
+ # raise exception if value type other than Fixnum or Symbol
64
+ Kernel::raise ArgumentError.new( "Wrong argument type %s for key (Expected: %s)" % [ key.class, "Symbol/Fixnum" ] ) unless [ Fixnum, Symbol ].include?( key.class )
65
+
66
+ # verify that keymap is defined for sut if symbol used.
67
+ Kernel::raise ArgumentError.new("Symbol #{ key.inspect } cannot be used due to no keymap defined for #{ sut.id } in TDriver configuration file.") if key.kind_of?( Symbol ) && MobyUtil::Parameter[ sut.id ][ :keymap ].nil?
68
+
69
+ # retrieve corresponding scan code (type of string, convert to fixnum) for symbol from keymap if available
70
+ key = MobyUtil::Parameter[ sut.id ][ :keymap ][ key ].hex unless MobyUtil::Parameter[ sut.id ][ :keymap ][ key ].nil?
71
+
72
+ # raise exception if value is other than fixnum
73
+ Kernel::raise ArgumentError.new( "Scan code for :%s not defined in keymap" % key ) unless key.kind_of?( Fixnum )
74
+
75
+ # determine keypress type
76
+ press_type = { :KeyDown => 'KeyPress', :KeyUp => 'KeyRelease' }.fetch( key_press[ :type ] ){ "KeyClick" }
77
+
78
+ Command( key.to_s, "name" => press_type.to_s, "modifiers" => "0", "delay" => "0")
79
+
80
+ }
81
+
82
+ }
83
+
84
+ }
85
+ }
86
+ }.to_xml
87
+
88
+ message
89
+
90
+ end
91
+
92
+ # enable hooking for performance measurement & debug logging
93
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
94
+
95
+ end #class
96
+
97
+ end #module QT
98
+
99
+ end #module MobyController