testability-driver 0.9.2 → 1.0.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.
Files changed (108) hide show
  1. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +1 -1
  2. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +11 -7
  3. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +8 -0
  4. data/lib/tdriver/base/behaviour/factory.rb +229 -209
  5. data/lib/tdriver/base/errors.rb +3 -0
  6. data/lib/tdriver/base/state_object.rb +11 -20
  7. data/lib/tdriver/base/sut/controller.rb +4 -4
  8. data/lib/tdriver/base/sut/factory.rb +205 -170
  9. data/lib/tdriver/base/sut/generic/behaviours/application.rb +256 -174
  10. data/lib/tdriver/base/sut/generic/behaviours/find.rb +17 -11
  11. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +57 -66
  12. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +578 -497
  13. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +41 -15
  14. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +48 -19
  15. data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
  16. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +25 -13
  17. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +16 -10
  18. data/lib/tdriver/base/sut/generic/plugin.rb +9 -3
  19. data/lib/tdriver/base/sut/sut.rb +41 -33
  20. data/lib/tdriver/base/test_object/abstract.rb +26 -3
  21. data/lib/tdriver/base/test_object/adapter.rb +399 -0
  22. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +56 -14
  23. data/lib/tdriver/base/test_object/behaviours/test_object.rb +663 -197
  24. data/lib/tdriver/base/test_object/cache.rb +132 -0
  25. data/lib/tdriver/base/test_object/factory.rb +677 -426
  26. data/lib/tdriver/base/test_object/factory_new.rb +202 -0
  27. data/lib/tdriver/base/test_object/identificator.rb +24 -17
  28. data/lib/tdriver/base/test_object/loader.rb +9 -3
  29. data/lib/tdriver/base/test_object/verification.rb +181 -0
  30. data/lib/tdriver/loader.rb +1 -1
  31. data/lib/tdriver/report/report.rb +2 -0
  32. data/lib/tdriver/report/report_api.rb +4 -4
  33. data/lib/tdriver/report/report_creator.rb +29 -3
  34. data/lib/tdriver/report/report_data_presentation.rb +7 -3
  35. data/lib/tdriver/report/report_execution_statistics.rb +80 -21
  36. data/lib/tdriver/report/report_javascript.rb +192 -0
  37. data/lib/tdriver/report/report_test_case_run.rb +22 -0
  38. data/lib/tdriver/report/report_test_run.rb +62 -55
  39. data/lib/tdriver/report/report_writer.rb +57 -56
  40. data/lib/tdriver/tdriver.rb +14 -41
  41. data/lib/tdriver/util/common/error.rb +1 -0
  42. data/lib/tdriver/util/common/exceptions.rb +12 -0
  43. data/lib/tdriver/util/common/file.rb +12 -6
  44. data/lib/tdriver/util/common/gem.rb +2 -1
  45. data/lib/tdriver/util/common/hash.rb +152 -0
  46. data/lib/tdriver/util/common/kernel.rb +49 -34
  47. data/lib/tdriver/util/common/loader.rb +21 -17
  48. data/lib/tdriver/util/common/numeric.rb +39 -0
  49. data/lib/tdriver/util/common/object.rb +115 -0
  50. data/lib/tdriver/util/common/string.rb +55 -2
  51. data/lib/tdriver/util/dbaccess/dbaccess.rb +194 -161
  52. data/lib/tdriver/util/dynamic_attribute_filter.rb +6 -0
  53. data/lib/tdriver/util/hooking.rb +2 -2
  54. data/lib/tdriver/util/loader.rb +2 -2
  55. data/lib/tdriver/util/localisation/localisation.rb +277 -18
  56. data/lib/tdriver/util/logger.rb +142 -13
  57. data/lib/tdriver/util/parameter/parameter_hash.rb +8 -5
  58. data/lib/tdriver/util/parameter/parameter_xml.rb +18 -2
  59. data/lib/tdriver/util/recorder.rb +17 -12
  60. data/lib/tdriver/util/user_data/user_data.rb +3 -2
  61. data/lib/tdriver/util/{video_rec.rb → video_utils.rb} +136 -16
  62. data/lib/tdriver/util/xml/abstraction.rb +7 -0
  63. data/lib/tdriver/util/xml/attribute.rb +32 -0
  64. data/lib/tdriver/util/xml/loader.rb +8 -2
  65. data/lib/tdriver/util/xml/nil_node.rb +95 -0
  66. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +46 -7
  67. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +19 -9
  68. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +1 -1
  69. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +13 -1
  70. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +6 -0
  71. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +27 -15
  72. data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +57 -0
  73. data/lib/tdriver/util/xml/text.rb +32 -0
  74. data/lib/tdriver/util/xml/xml.rb +35 -22
  75. data/lib/tdriver/version.rb +1 -1
  76. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +41 -34
  77. data/lib/tdriver-devtools/doc/generate.rb +31 -6
  78. data/lib/tdriver-devtools/doc/xslt/template.xsl +46 -25
  79. data/lib/tdriver-devtools/tests/feature_tests/example/behaviour_example.rb +100 -0
  80. data/lib/tdriver-devtools/tests/feature_tests/update +1 -1
  81. data/lib/tdriver.rb +0 -3
  82. data/xml/behaviours/generic.xml +1 -1
  83. data/xml/defaults/generic.xml +4 -90
  84. data/xml/templates/generic.xml +33 -25
  85. metadata +21 -29
  86. data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +0 -245
  87. data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +0 -964
  88. data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +0 -68
  89. data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +0 -1865
  90. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +0 -1
  91. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +0 -3
  92. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +0 -4
  93. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +0 -4
  94. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +0 -4
  95. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +0 -3
  96. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +0 -3
  97. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +0 -1
  98. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +0 -3
  99. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +0 -3
  100. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +0 -12
  101. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +0 -5
  102. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +0 -1
  103. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +0 -2
  104. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +0 -7
  105. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +0 -14
  106. data/lib/tdriver-devtools/behaviour/xml_generator/update +0 -3
  107. data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +0 -233
  108. data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +0 -194
@@ -44,10 +44,25 @@ module MobyBehaviour
44
44
 
45
45
  include MobyBehaviour::Behaviour
46
46
 
47
+ # == description
47
48
  # Instructs the SUT to reboot
48
- # === params
49
- # === returns
50
- # === raises
49
+ # == returns
50
+ # NilClass
51
+ # description: -
52
+ # example: -
53
+ # == exceptions
54
+ # BehaviourError
55
+ # description: switchbox_sleep_before_powerup_in_reboot not defined for sut in tdriver_parameters.xml
56
+ # BehaviourError
57
+ # description: switchbox_sleep_after_powerup_in_reboot not defined for sut in tdriver_parameters.xml
58
+ # BehaviourError
59
+ # description: switchbox_sleep_before_powerup_in_reboot need to be non-negative integer smaller than 50 seconds
60
+ # BehaviourError
61
+ # description: switchbox_sleep_in_reboot could not be converted to integer
62
+ # BehaviourError
63
+ # description: switchbox_sleep_after_powerup_in_reboot need to be non-negative integer smaller than 500 seconds
64
+ # BehaviourError
65
+ # description: switchbox_sleep_after_powerup_in_reboot could not be converted to integer
51
66
  def reset
52
67
  str_sleep_time_before_powerup = parameter(:switchbox_sleep_before_powerup_in_reboot)
53
68
  Kernel::raise BehaviourError.new("reboot", "switchbox_sleep_before_powerup_in_reboot not defined for sut in tdriver_parameters.xml") if str_sleep_time_before_powerup == nil
@@ -72,8 +87,6 @@ module MobyBehaviour
72
87
  rescue
73
88
  Kernel::raise BehaviourError.new("reboot", "switchbox_sleep_after_powerup_in_reboot could not be converted to integer")
74
89
  end
75
-
76
-
77
90
 
78
91
  power_down
79
92
  begin
@@ -86,7 +99,7 @@ module MobyBehaviour
86
99
 
87
100
  MobyUtil::Retryable.until( :timeout => 60, :retry_timeout => 5 ) {
88
101
  system(str_commands_after_powerup) if str_commands_after_powerup != nil
89
- if MobyUtil::Parameter[ :ats4_error_recovery_enabled, false ]=='true'
102
+ if MobyUtil::Parameter[ :ats4_error_recovery_enabled, false ]!='true'
90
103
  MobyUtil::Logger.instance.log "behaviour" , "PASS;TDriver attempting reconnect"
91
104
  self.connect(self.id)
92
105
  MobyUtil::Logger.instance.log "behaviour" , "PASS;TDriver connected"
@@ -97,10 +110,15 @@ module MobyBehaviour
97
110
  }
98
111
  end
99
112
 
113
+ # == description
100
114
  # Instructs the switchbox to power down the sut
101
- # === params
102
- # === returns
103
- # === raises
115
+ # == returns
116
+ # Boolean
117
+ # description: Current power status
118
+ # example: false
119
+ # == exceptions
120
+ # BehaviourError
121
+ # description: Failed to power down
104
122
  def power_down
105
123
  str_command_arr = []
106
124
 
@@ -129,10 +147,16 @@ module MobyBehaviour
129
147
  @switch_box_power_status = false
130
148
  end
131
149
 
150
+
151
+ # == description
132
152
  # Instructs the switchbox to power up the sut
133
- # === params
134
- # === returns
135
- # === raises
153
+ # == returns
154
+ # Boolean
155
+ # description: Current power status
156
+ # example: true
157
+ # == exceptions
158
+ # BehaviourError
159
+ # description: Failed to power up
136
160
  def power_up
137
161
  str_command_arr = []
138
162
 
@@ -161,10 +185,12 @@ module MobyBehaviour
161
185
  @switch_box_power_status = true
162
186
  end
163
187
 
188
+ # == description
164
189
  # Gets the current power status of the switchbox
165
- # === params
166
- # === returns
167
- # === raises
190
+ # == returns
191
+ # Boolean
192
+ # description: Current power status
193
+ # example: true
168
194
  def power_status
169
195
  if @switch_box_power_status == nil
170
196
  false
@@ -20,7 +20,7 @@
20
20
  module MobyBehaviour
21
21
 
22
22
  # == description
23
- # Defines methods for verification of sut and test object state
23
+ # Defines methods for verification of test object state. These methods can only be called from non-sut objects
24
24
  #
25
25
  # == behaviour
26
26
  # GenericVerification
@@ -38,31 +38,58 @@ module MobyBehaviour
38
38
  # *
39
39
  #
40
40
  # == objects
41
- # *;sut
41
+ # *
42
42
  #
43
43
  module Verification
44
44
 
45
45
  include MobyBehaviour::Behaviour
46
46
 
47
47
  # == description
48
- # Checks if a child test object matching the given criteria can be found on the sut
49
- # === params
50
- # type:: String defining the type of the object
51
- # attributes:: (optional) Hash containing attributes that the object must have
52
- # === returns
53
- # Boolean:: true if the object exists on the sut display
54
- # === raises
55
- # ArgumentError:: The type argument was not a non-empty String or attributes argument (if provided) was not a Hash
56
- # === example
57
- # @calc = @sut.run(:name => 'calculator') # launches calculator
58
- # testobj_exists = @calc.test_object_exists?('Button',{:text => '+',:objectName => 'plusButton'} # check if test object with given criteria exists in calculator
59
-
60
- def test_object_exists?(type, attributes = Hash.new)
61
-
62
- Kernel::raise ArgumentError.new "The type argument must be a non empty String." unless (type.kind_of? String and !type.empty?)
63
- Kernel::raise ArgumentError.new "The attributes argument must be a Hash." unless attributes.kind_of? Hash
48
+ # Checks if a child test object matching the given criteria can be found, under this application object or test object.
49
+ #
50
+ # == arguments
51
+ # type
52
+ # String
53
+ # description: String defining the type of the object
54
+ # example: "Button"
55
+ #
56
+ # attributes
57
+ # Hash
58
+ # description: Optional hash containing attributes that the object must have
59
+ # example: {}
60
+ #
61
+ # == returns
62
+ # TrueClass
63
+ # description: if the object exists on the sut display
64
+ # example: true
65
+ # FalseClass
66
+ # description: if the object exists on the sut display
67
+ # example: false
68
+ #
69
+ # == exceptions
70
+ # TypeError
71
+ # description: Wrong argument type %s for test object type (expected String)
72
+ #
73
+ # ArgumentError
74
+ # description: The test object type argument must not be empty
75
+ #
76
+ # TypeError
77
+ # description: Wrong argument type %s for test object attributes (expected Hash)
78
+ def test_object_exists?(type, attributes = {} )
79
+
80
+ # verify type
81
+ #Kernel::raise ArgumentError.new "The type argument must be a non empty String." unless (type.kind_of? String and !type.empty?)
82
+ type.check_type( String, "Wrong argument type $1 for test object type (expected $2)" )
83
+
84
+ # verify that type is not empty string
85
+ type.not_empty( "The test object type argument must not be empty" )
86
+
87
+ # verify type
88
+ #Kernel::raise ArgumentError.new "The attributes argument must be a Hash." unless attributes.kind_of?( Hash )
89
+ attributes.check_type( Hash, "Wrong argument type $1 for test object attributes (expected $2)")
64
90
 
65
91
  #attributes_with_type = {}.merge attributes
92
+
66
93
  attributes_with_type = attributes.clone
67
94
  attributes_with_type[:type] = type
68
95
  attributes_with_type.delete(:__logging)
@@ -70,7 +97,8 @@ module MobyBehaviour
70
97
  #translate the symbol values into string using sut's localisation setting
71
98
  translate!( attributes_with_type )
72
99
 
73
- identificator = MobyBase::TestObjectIdentificator.new( attributes_with_type )
100
+ # JKo: is there some reason for the line below?
101
+ #identificator = MobyBase::TestObjectIdentificator.new( attributes_with_type )
74
102
 
75
103
  original_logging = MobyUtil::Logger.instance.enabled
76
104
  desired_logging = (attributes[:__logging] == nil || attributes[:__logging] == 'false') ? false : true
@@ -80,6 +108,7 @@ module MobyBehaviour
80
108
  begin
81
109
 
82
110
  self.child( attributes_with_type )
111
+
83
112
  MobyUtil::Logger.instance.enabled = desired_logging
84
113
  MobyUtil::Logger.instance.log "behaviour" , "PASS;Test object of type #{type} with attributes #{attributes.inspect} was found.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s : ''};test_object_exist;"
85
114
 
@@ -0,0 +1,47 @@
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
+
21
+
22
+ module MobyCommand
23
+
24
+ class Fixture < MobyCommand::CommandData
25
+
26
+ attr_accessor :params
27
+
28
+
29
+ # == description
30
+ # Fixture command holds the required parameters to execute a fixture operation in the target.
31
+ #
32
+ # == arguments
33
+ # params
34
+ # Hash
35
+ # description:
36
+ # Hash for holding the parameters need by the fixture operation.
37
+ # Example: {:application_id => "", :object_id => "", :object_type => "", :name => nil, :command_name => nil, :parameters => {}, :async => false)}
38
+ #
39
+ def initialize(params)
40
+
41
+ @params = params
42
+
43
+ end
44
+
45
+ end # Fixture
46
+
47
+ end # MobyCommand
@@ -17,7 +17,6 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
-
21
20
  module MobyCommand
22
21
 
23
22
  class KeySequence < MobyCommand::CommandData
@@ -32,9 +31,9 @@ module MobyCommand
32
31
  # Instance of KeySequence
33
32
  def initialize( key_symbol = nil, type_symbol = :ShortPress )
34
33
  #TODO: Review comment (OR): @sequence -> @_sequence?
35
- @sequence = Array.new( 0 )
34
+ @sequence = [] # Array.new( 0 )
36
35
  #@_sut = sut
37
- self.append!( key_symbol, type_symbol ) unless key_symbol == nil
36
+ self.append!( key_symbol, type_symbol ) unless key_symbol.nil?
38
37
  end
39
38
 
40
39
  # Function to append a keypress with type to KeySequence.sequence array
@@ -50,28 +49,41 @@ module MobyCommand
50
49
 
51
50
  # Function to repeat last added keypress in sequence unless count is less than one or keypress sequence is empty
52
51
  # == params
53
- # int:: times of key repeated, default is one
52
+ # count:: times of key repeated, default is one
54
53
  # == returns
55
54
  # self
56
55
  # == raises
57
- # ArgumentError:: Fixnum expected as argument
58
- # ArgumentError:: Positive value expected as argument
59
- # IndexError:: Not allowed when empty key sequence
60
- def times!( int = 1 )
61
- Kernel::raise ArgumentError.new("Fixnum expected as argument") if int.class != Fixnum
62
- Kernel::raise ArgumentError.new("Positive value expected as argument") if int < 0
63
- Kernel::raise IndexError.new("Not allowed when empty key sequence") if @sequence.size == 0
64
- int.times do | iteration |
56
+ # TypeError:: Wrong argument type %s for times count (expected Fixnum)
57
+ # ArgumentError:: Positive value expected for times count (got %i)
58
+ # IndexError:: Unable to multiply last given key due to key sequence is empty
59
+ def times!( count = 1 )
60
+
61
+ # verify count argument type
62
+ #Kernel::raise ArgumentError.new("Fixnum expected as argument") if count.class != Fixnum
63
+ count.check_type( Fixnum, "Wrong argument type $1 for times count (expected $2)" )
64
+
65
+ # verify that count is positive number
66
+ Kernel::raise ArgumentError.new( "Positive value expected for times count (got #{ count })" ) if count.negative?
67
+
68
+ # verify that @sequence is not empty
69
+ #Kernel::raise IndexError.new( "Not allowed when empty key sequence" ) if @sequence.size == 0
70
+ Kernel::raise IndexError.new( "Unable to multiply last given key due to key sequence is empty" ) if @sequence.empty?
71
+
72
+ count.times do | iteration |
73
+
65
74
  @sequence.push @sequence.fetch( -1 ) unless iteration == 0
75
+
66
76
  end
77
+
67
78
  self
79
+
68
80
  end
69
81
 
70
82
  # Returns the stored sequence as an Array with Hash elements having :value and :type keys for each press.
71
83
  # == returns
72
84
  # Array:: Stored key sequence
73
85
  def get_sequence
74
- return @sequence
86
+ @sequence
75
87
  end
76
88
 
77
89
  # enable hooking for performance measurement & debug logging
@@ -31,23 +31,29 @@ module MobyCommand
31
31
 
32
32
  # Constructor to ScreenCapture
33
33
  # == params
34
- # hash:: (optional) Hash of image related attributes
34
+ # attributes:: (optional) Hash of image related attributes
35
35
  # == returns
36
36
  # Instance of ScreenCapture
37
- def initialize( hash = {} )
37
+ def initialize( attributes = {} )
38
38
 
39
- # Default values
40
- @command = hash[ :type ] ||= :Screen
41
- @image_mime_type = hash[ :mime_type ] ||= :PNG
42
- @color_depth = hash[ :color_depth ] ||= :Color4K
43
- @redraw = hash[ :redraw ] ||= false
39
+ # verify that attributes argument is type of Hash
40
+ attributes.check_type( Hash, "Wrong argument type $1 for screen capture command attributes (expected $2)" )
44
41
 
45
- Kernel::raise ArgumentError.new("Wrong argument type %s for command type (expected Symbol)" % hash[ :type ].class ) unless hash[ :type ].kind_of? Symbol
42
+ # set default values unless already defined in attributes hash
43
+ attributes.default_values( :type => :Screen, :mime_type => :PNG, :color_depth => :Color4K, :redraw => false )
46
44
 
47
- Kernel::raise ArgumentError.new("Wrong argument type %s for image MIME type (expected Symbol)" % hash[ :mime_type ].class ) unless hash[ :mime_type ].kind_of? Symbol
45
+ # verify that value of :type is type of Symbol
46
+ ( @command = attributes[ :type ] ).check_type( Symbol, "Wrong argument type $1 for screen capture command type (expected $2)" )
48
47
 
49
- Kernel::raise ArgumentError.new("Wrong argument type %s for image color depth type (expected Symbol)" % hash[ :color_depth ].class ) unless hash[ :color_depth ].kind_of? Symbol
48
+ # verify that value of :mime_type is type of Symbol
49
+ ( @image_mime_type = attributes[ :mime_type ] ).check_type( Symbol, "Wrong argument type $1 for screen capture command mime type (expected $2)" )
50
50
 
51
+ # verify that value of :color_depth is type of Symbol
52
+ ( @color_depth = attributes[ :color_depth ] ).check_type( Symbol, "Wrong argument type $1 for screen capture command image color depth type (expected $2)" )
53
+
54
+ # verify that value of :redraw is type of Symbol
55
+ ( @redraw = attributes[ :redraw ] ).check_type( [ TrueClass, FalseClass ], "Wrong argument type $1 for screen capture command redraw flag (expected $2)" )
56
+
51
57
  end
52
58
 
53
59
  # enable hooking for performance measurement & debug logging
@@ -17,9 +17,8 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
-
21
20
  # verify that plugin engine and modules is loaded
22
- Kernel::raise RuntimeError.new( "SUT plugin requires TDriver" ) unless defined?( MobyUtil::Plugin )
21
+ Kernel::raise RuntimeError.new( "This SUT plugin requires Testability Driver and cannot be launched in standalone mode" ) unless defined?( MobyUtil::Plugin )
23
22
 
24
23
  module MobyPlugin
25
24
 
@@ -75,12 +74,19 @@ module MobyPlugin
75
74
  # returns SUT object - this method will be called from MobyBase::SUTFactory
76
75
  def self.make_sut( sut_id )
77
76
 
77
+ # MobyBase::SUT.new(
78
+ # MobyBase::SutController.new( "", MobyController::SutAdapter.new() ),
79
+ # MobyBase::TestObjectFactory.instance,
80
+ # sut_id
81
+ # )
82
+
78
83
  MobyBase::SUT.new(
79
84
  MobyBase::SutController.new( "", MobyController::SutAdapter.new() ),
80
- MobyBase::TestObjectFactory.instance,
85
+ TDriver.TestObjectFactory.new( TDriver::TestObjectAdapter ),
81
86
  sut_id
82
87
  )
83
88
 
89
+
84
90
  end
85
91
 
86
92
  # enable hooking for performance measurement & debug logging
@@ -20,48 +20,56 @@
20
20
  # abstract class for SUT - no behaviours
21
21
  module MobyBase
22
22
 
23
- class SUT
23
+ class SUT
24
24
 
25
- attr_accessor(
26
- :id, # id of current SUT
27
- :ui_type, # ui type
28
- :ui_version, # ui version
29
- :input, # the input method used for interacting with this sut as a symbol, eg. :key or :touch.
30
- :type # type of object ("SUT"), used when applying behaviour
31
- )
25
+ attr_accessor(
26
+ :id, # id of current SUT
27
+ :ui_type, # ui type
28
+ :ui_version, # ui version
29
+ :input, # the input method used for interacting with this sut as a symbol, eg. :key or :touch.
30
+ :type # type of object ("SUT"), used when applying behaviour
31
+ )
32
32
 
33
- # Initialize SUT by giving references to the used controller and test object factory
34
- # == params
35
- # sut_controller:: Controller object that acts as a facade to the device represented by this SUT
36
- # test_object_factory:: TestObjectFactory object, a factory for generating creating test objects for this SUT
37
- # sut_id:: String representing the identification of this SUT - the identification will need to match with group id in parameters xml
38
- def initialize( sut_controller, test_object_factory, sut_id )
33
+ # Initialize SUT by giving references to the used controller and test object factory
34
+ # == params
35
+ # sut_controller:: Controller object that acts as a facade to the device represented by this SUT
36
+ # test_object_factory:: TestObjectFactory object, a factory for generating creating test objects for this SUT
37
+ # sut_id:: String representing the identification of this SUT - the identification will need to match with group id in parameters xml
38
+ def initialize( sut_controller, test_object_factory, sut_id )
39
39
 
40
- @_sutController = sut_controller
41
- @test_object_factory = test_object_factory
40
+ @_sutController = sut_controller
41
+
42
+ @test_object_factory = test_object_factory || TDriver::TestObjectFactory.new( :test_object_adapter => TDriver::TestObjectAdapter )
42
43
 
43
- @id = sut_id
44
- @input = :key
45
- @type = "sut"
44
+ @id = sut_id
45
+ @input = :key
46
+ @type = "sut"
46
47
 
47
- end
48
+ end
48
49
 
49
- # Interface to forward command execution to sut specific controller (SutController#execute_command)
50
- # == params
51
- # command:: MobyBase::CommandData descendant object defining the command
52
- # == raises
53
- # ?:: what ever SutController#execute_command( command ) raises
54
- # == returns
55
- # Boolean:: what ever SutController returns
56
- def execute_command( command )
50
+ # Interface to forward command execution to sut specific controller (SutController#execute_command)
51
+ # == params
52
+ # command:: MobyBase::CommandData descendant object defining the command
53
+ # == raises
54
+ # ?:: what ever SutController#execute_command( command ) raises
55
+ # == returns
56
+ # Boolean:: what ever SutController returns
57
+ def execute_command( command )
57
58
 
58
- @_sutController.execute_command( command )
59
+ @_sutController.execute_command( command )
59
60
 
60
- end
61
+ end
61
62
 
62
- # enable hooking for performance measurement & debug logging
63
- MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
63
+ # TODO: document me
64
+ def inspect
64
65
 
65
- end # SUT
66
+ "#<#{ self.class }:0x#{ ( "%x" % ( self.object_id.to_i << 1 ) )[ 3 .. -1 ] } @id=#{ @id.inspect } @input=\"#{ @input }\" @type=\"#{ @type }\" @ui_type=\"#{ @ui_type }\" @ui_version=\"#{ @ui_version }\">"
67
+
68
+ end
69
+
70
+ # enable hooking for performance measurement & debug logging
71
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
72
+
73
+ end # SUT
66
74
 
67
75
  end # MobyBase