testability-driver 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 (214) hide show
  1. data/README +1 -0
  2. data/bin/start_app_perf +199 -0
  3. data/bin/tdriver-devtools +3 -0
  4. data/config/sut_parameters.rb +39 -0
  5. data/ext/extconf.rb +67 -0
  6. data/ext/native_extensions.c +70 -0
  7. data/lib/matti.rb +30 -0
  8. data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +223 -0
  9. data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
  10. data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
  11. data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
  12. data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
  13. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
  14. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
  15. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
  16. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
  17. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
  18. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
  19. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
  20. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
  21. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
  22. data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
  23. data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
  24. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1924 -0
  25. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
  26. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
  27. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
  28. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
  29. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
  30. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
  31. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
  32. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
  33. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
  34. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
  35. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
  36. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
  37. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
  38. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
  39. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
  40. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
  41. data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +245 -0
  42. data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +964 -0
  43. data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +68 -0
  44. data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +1865 -0
  45. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +1 -0
  46. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +3 -0
  47. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +4 -0
  48. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +4 -0
  49. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +4 -0
  50. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +3 -0
  51. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +3 -0
  52. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +1 -0
  53. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +3 -0
  54. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +3 -0
  55. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +12 -0
  56. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +5 -0
  57. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +1 -0
  58. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +2 -0
  59. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +7 -0
  60. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +14 -0
  61. data/lib/tdriver-devtools/behaviour/xml_generator/update +3 -0
  62. data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
  63. data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
  64. data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
  65. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
  66. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
  67. data/lib/tdriver-devtools/doc/generate.rb +892 -0
  68. data/lib/tdriver-devtools/doc/update +1 -0
  69. data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
  70. data/lib/tdriver-devtools/doc/xslt/template.xsl +1861 -0
  71. data/lib/tdriver-devtools/doc/xslt/update +3 -0
  72. data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
  73. data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
  74. data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +233 -0
  75. data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +194 -0
  76. data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
  77. data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
  78. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
  79. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
  80. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
  81. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
  82. data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
  83. data/lib/tdriver.rb +26 -0
  84. data/lib/tdriver/base/behaviour/behaviour.rb +32 -0
  85. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +94 -0
  86. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +262 -0
  87. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +111 -0
  88. data/lib/tdriver/base/behaviour/factory.rb +380 -0
  89. data/lib/tdriver/base/behaviour/loader.rb +28 -0
  90. data/lib/tdriver/base/command_data/command_data.rb +51 -0
  91. data/lib/tdriver/base/command_data/loader.rb +25 -0
  92. data/lib/tdriver/base/errors.rb +131 -0
  93. data/lib/tdriver/base/loader.rb +38 -0
  94. data/lib/tdriver/base/state_object.rb +270 -0
  95. data/lib/tdriver/base/sut/adapter.rb +28 -0
  96. data/lib/tdriver/base/sut/controller.rb +119 -0
  97. data/lib/tdriver/base/sut/factory.rb +287 -0
  98. data/lib/tdriver/base/sut/generic/behaviours/application.rb +243 -0
  99. data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
  100. data/lib/tdriver/base/sut/generic/behaviours/find.rb +96 -0
  101. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +346 -0
  102. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1268 -0
  103. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +182 -0
  104. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +119 -0
  105. data/lib/tdriver/base/sut/generic/commands/application.rb +219 -0
  106. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +82 -0
  107. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +58 -0
  108. data/lib/tdriver/base/sut/generic/plugin.rb +96 -0
  109. data/lib/tdriver/base/sut/loader.rb +35 -0
  110. data/lib/tdriver/base/sut/sut.rb +67 -0
  111. data/lib/tdriver/base/test_object/abstract.rb +179 -0
  112. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +94 -0
  113. data/lib/tdriver/base/test_object/behaviours/test_object.rb +787 -0
  114. data/lib/tdriver/base/test_object/factory.rb +618 -0
  115. data/lib/tdriver/base/test_object/identificator.rb +511 -0
  116. data/lib/tdriver/base/test_object/loader.rb +37 -0
  117. data/lib/tdriver/env.rb +21 -0
  118. data/lib/tdriver/loader.rb +36 -0
  119. data/lib/tdriver/matti.rb +35 -0
  120. data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
  121. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +158 -0
  122. data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +98 -0
  123. data/lib/tdriver/report/report.rb +47 -0
  124. data/lib/tdriver/report/report_api.rb +207 -0
  125. data/lib/tdriver/report/report_combine.rb +86 -0
  126. data/lib/tdriver/report/report_crash_file_capture.rb +167 -0
  127. data/lib/tdriver/report/report_creator.rb +571 -0
  128. data/lib/tdriver/report/report_cucumber.rb +158 -0
  129. data/lib/tdriver/report/report_cucumber_listener.rb +337 -0
  130. data/lib/tdriver/report/report_cucumber_reporter.rb +335 -0
  131. data/lib/tdriver/report/report_data_presentation.rb +152 -0
  132. data/lib/tdriver/report/report_data_table.rb +64 -0
  133. data/lib/tdriver/report/report_execution_statistics.rb +284 -0
  134. data/lib/tdriver/report/report_file_capture.rb +159 -0
  135. data/lib/tdriver/report/report_grouping.rb +539 -0
  136. data/lib/tdriver/report/report_junit_xml.rb +147 -0
  137. data/lib/tdriver/report/report_rspec.rb +108 -0
  138. data/lib/tdriver/report/report_test_case_run.rb +621 -0
  139. data/lib/tdriver/report/report_test_run.rb +1286 -0
  140. data/lib/tdriver/report/report_test_unit.rb +175 -0
  141. data/lib/tdriver/report/report_writer.rb +1405 -0
  142. data/lib/tdriver/tdriver.rb +158 -0
  143. data/lib/tdriver/util/common.rb +24 -0
  144. data/lib/tdriver/util/common/array.rb +39 -0
  145. data/lib/tdriver/util/common/crc16.rb +100 -0
  146. data/lib/tdriver/util/common/environment.rb +153 -0
  147. data/lib/tdriver/util/common/error.rb +39 -0
  148. data/lib/tdriver/util/common/file.rb +315 -0
  149. data/lib/tdriver/util/common/gem.rb +108 -0
  150. data/lib/tdriver/util/common/kernel.rb +189 -0
  151. data/lib/tdriver/util/common/loader.rb +39 -0
  152. data/lib/tdriver/util/common/retryable.rb +98 -0
  153. data/lib/tdriver/util/common/string.rb +77 -0
  154. data/lib/tdriver/util/dbaccess/dbaccess.rb +188 -0
  155. data/lib/tdriver/util/dbaccess/dbconnection.rb +41 -0
  156. data/lib/tdriver/util/dbaccess/error.rb +35 -0
  157. data/lib/tdriver/util/dbaccess/loader.rb +29 -0
  158. data/lib/tdriver/util/dynamic_attribute_filter.rb +182 -0
  159. data/lib/tdriver/util/hooking.rb +434 -0
  160. data/lib/tdriver/util/loader.rb +65 -0
  161. data/lib/tdriver/util/localisation.rb +24 -0
  162. data/lib/tdriver/util/localisation/error.rb +32 -0
  163. data/lib/tdriver/util/localisation/loader.rb +28 -0
  164. data/lib/tdriver/util/localisation/localisation.rb +479 -0
  165. data/lib/tdriver/util/logger.rb +377 -0
  166. data/lib/tdriver/util/operator_data/error.rb +29 -0
  167. data/lib/tdriver/util/operator_data/loader.rb +26 -0
  168. data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
  169. data/lib/tdriver/util/other/config.rb +221 -0
  170. data/lib/tdriver/util/parameter.rb +24 -0
  171. data/lib/tdriver/util/parameter/error.rb +45 -0
  172. data/lib/tdriver/util/parameter/loader.rb +37 -0
  173. data/lib/tdriver/util/parameter/parameter.rb +285 -0
  174. data/lib/tdriver/util/parameter/parameter_hash.rb +101 -0
  175. data/lib/tdriver/util/parameter/parameter_template.rb +120 -0
  176. data/lib/tdriver/util/parameter/parameter_user_api.rb +84 -0
  177. data/lib/tdriver/util/parameter/parameter_xml.rb +247 -0
  178. data/lib/tdriver/util/plugin/abstract.rb +60 -0
  179. data/lib/tdriver/util/plugin/error.rb +25 -0
  180. data/lib/tdriver/util/plugin/loader.rb +28 -0
  181. data/lib/tdriver/util/plugin/service.rb +200 -0
  182. data/lib/tdriver/util/recorder.rb +292 -0
  183. data/lib/tdriver/util/stats.rb +90 -0
  184. data/lib/tdriver/util/user_data/error.rb +29 -0
  185. data/lib/tdriver/util/user_data/loader.rb +26 -0
  186. data/lib/tdriver/util/user_data/user_data.rb +103 -0
  187. data/lib/tdriver/util/video_rec.rb +264 -0
  188. data/lib/tdriver/util/xml/abstraction.rb +47 -0
  189. data/lib/tdriver/util/xml/builder.rb +54 -0
  190. data/lib/tdriver/util/xml/document.rb +32 -0
  191. data/lib/tdriver/util/xml/element.rb +32 -0
  192. data/lib/tdriver/util/xml/error.rb +46 -0
  193. data/lib/tdriver/util/xml/loader.rb +46 -0
  194. data/lib/tdriver/util/xml/nil_element.rb +89 -0
  195. data/lib/tdriver/util/xml/nodeset.rb +32 -0
  196. data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
  197. data/lib/tdriver/util/xml/parsers/loader.rb +22 -0
  198. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +111 -0
  199. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +54 -0
  200. data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +58 -0
  201. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +58 -0
  202. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +147 -0
  203. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +42 -0
  204. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +187 -0
  205. data/lib/tdriver/util/xml/xml.rb +170 -0
  206. data/lib/tdriver/verify/verify.rb +687 -0
  207. data/lib/tdriver/verify/verify.rb_org +630 -0
  208. data/lib/tdriver/version.rb +21 -0
  209. data/xml/behaviours/generic.xml +495 -0
  210. data/xml/defaults/generic.xml +97 -0
  211. data/xml/defaults/sut_generic.xml +36 -0
  212. data/xml/parameters/tdriver_parameters.xml +23 -0
  213. data/xml/templates/generic.xml +227 -0
  214. metadata +327 -0
@@ -0,0 +1,28 @@
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 Testability Driver.
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
+
23
+ # behaviour abstract class
24
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour' ) )
25
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'factory' ) )
26
+
27
+ # load generic behaviours
28
+ MobyUtil::FileHelper.load_modules( File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviours' ) ) )
@@ -0,0 +1,51 @@
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 Testability Driver.
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
+
23
+ module MobyCommand
24
+
25
+ # Class to represent Controller interface
26
+
27
+ class CommandData
28
+
29
+ def initialize
30
+ end
31
+
32
+ def set_application_uid( id )
33
+ @_application_id = id
34
+ end
35
+
36
+ def get_application_id
37
+ @_application_id = "" unless @_application_id
38
+ @_application_id
39
+ end
40
+
41
+ def set_sut( sut )
42
+ @_sut = sut
43
+ end
44
+
45
+ def get_sut( sut )
46
+ @_sut
47
+ end
48
+
49
+ end
50
+
51
+ end # module
@@ -0,0 +1,25 @@
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 Testability Driver.
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
+
23
+ # command_data abstract class
24
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data' ) )
25
+
@@ -0,0 +1,131 @@
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 Testability Driver.
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
+ module MobyBase
22
+
23
+ class Error
24
+
25
+ @@errors = {
26
+ :WrongArgumentType => {:type => "ArgumentError", :text => "Wrong argument type %s (Expected %s)"},
27
+ :WrongArgumentTypeFor => {:type => "ArgumentError", :text => "Wrong argument type %s for %s (Expected %s)"},
28
+ :ArgumentSymbolExpected => {:type => "ArgumentError", :text => "Symbol %s expected in argument(s)"},
29
+ :InvalidStringLengthFor => {:type => "ArgumentError", :text => "Invalid string length (%i) for %s (Expected %s)"},
30
+ :BehaviourErrorOccured => {:type => "RuntimeError", :text => "%s method failed with message: %s. Debug info: %s"}
31
+ }
32
+
33
+ def self.raise( error_id, *params )
34
+
35
+ if @@errors.has_key?( error_id )
36
+
37
+ error_type = eval(@@errors[ error_id ][ :type ])
38
+ error_text = @@errors[ error_id ][ :text ]
39
+
40
+ # Replace %s to given parameters
41
+ message = error_text.gsub( /\%[-]*\d*[disxX]/ ) { | match | ( params.size > 0 ) ? "#{ match }" % params.shift : match }
42
+
43
+ else
44
+
45
+ # Raise ArgumentError if given id is not defined in @@error_base hash table
46
+ error_type = ArgumentError
47
+ message = "No error found for ID '%s' (Parameters: %s)" % [ error_id, params.join( ", " ) ]
48
+
49
+ end
50
+
51
+ error = error_type.new( message )
52
+ Kernel::raise error
53
+ end
54
+
55
+ # enable hooking for performance measurement & debug logging
56
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
57
+
58
+ end
59
+
60
+ # TODO: document
61
+ class MobyStandardError < StandardError
62
+ # Construct a new error, optionally passing in a message
63
+ def initialize ( message = nil ); super( message ); end
64
+ end
65
+
66
+ # TODO: document
67
+ class TestObjectNotVisibleError < MobyStandardError; end;
68
+
69
+ # TODO: document
70
+ class TestObjectNotFoundError < MobyStandardError; end;
71
+
72
+ # TODO: document
73
+ class MultipleTestObjectsIdentifiedError < MobyStandardError; end;
74
+
75
+ # TODO: document
76
+ class MultipleAttributesFoundError < MobyStandardError; end;
77
+
78
+ # TODO: document
79
+ class AttributeNotFoundError < MobyStandardError; end;
80
+
81
+ # TODO: document
82
+ class TestObjectNotInitializedError < MobyStandardError; end;
83
+
84
+ # TODO: document
85
+ class FileNotFoundError < MobyStandardError; end;
86
+
87
+ # TODO: document
88
+ class TestObjectIdentificatorError < MobyStandardError; end;
89
+
90
+ #Raised when a method is called with an invalid parameter(eg. wrong type, impossible value, nil)
91
+ class InvalidParameterError < MobyStandardError; end;
92
+
93
+ # This error should be raised when verification results were not as expected
94
+ class VerificationError < MobyStandardError; end;
95
+
96
+ # This verification error should overwrite standard verification procedure and
97
+ # fail immediately
98
+ class ContinuousVerificationError < VerificationError; end;
99
+
100
+ # This error should be raised to indicate that a synchronization timeout has elapsed without
101
+ # synchronization conditions having been met.
102
+ class SyncTimeoutError < MobyStandardError; end;
103
+
104
+ class ControllerError < MobyStandardError; end; #def initialize ( msg = nil ); super( msg ); end; end # class
105
+
106
+ class ControllerNotFoundError < MobyStandardError; end;
107
+
108
+ class CommandNotFoundError < MobyStandardError; end
109
+
110
+
111
+ # TODO: document
112
+ class MobyCustomError < StandardError
113
+ attr_reader :message
114
+ def initialize( message = "" )
115
+ # get backtrace from error
116
+ tmp_trace = ( ( $!.nil? ) ? [] : $!.backtrace )
117
+ # add caller method to backtrace
118
+ set_backtrace( ( ( caller( 2 ).nil? ) ? tmp_trace : tmp_trace.unshift( caller( 2 ).first[ /(.+):in/, 1 ] ) ) )
119
+ @message = message << ( $!.nil? ? "" : ". Exception: #{ $!.message }" )
120
+ super
121
+ end
122
+ end
123
+
124
+ # TODO: document
125
+ class BehaviourError < MobyCustomError
126
+ def initialize ( method_name = nil, description = nil )
127
+ super( "%s failed. %s" % [ method_name, description ] )
128
+ end
129
+ end
130
+
131
+ end # MobyBase
@@ -0,0 +1,38 @@
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 Testability Driver.
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
+ # behaviour abstraction class, factory and all other related modules etc
22
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/loader' ) )
23
+
24
+ # command_data abstraction class etc.
25
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data/loader' ) )
26
+
27
+ # sut abstract class, generic sut etc
28
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'sut/loader' ) )
29
+
30
+ # error classes
31
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'errors' ) )
32
+
33
+ # test object abstraction, factory, identificator behaviours and all other related modules
34
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'test_object/loader' ) )
35
+
36
+ # state object
37
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'state_object' ) )
38
+
@@ -0,0 +1,270 @@
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 Testability Driver.
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
+ module MobyBase
22
+
23
+ # Static representation of the state of a TestObject or SUT.
24
+ # StateObject are not refreshed or synchronize etc.
25
+ class StateObject
26
+
27
+ #include MobyBehaviour::TestObjectComposition
28
+ include MobyBehaviour::ObjectComposition
29
+
30
+ # The test object factory is needed for populating child object accessor methods
31
+ #@test_object_factory
32
+
33
+ # == description
34
+ # attr_accessor
35
+ #
36
+ # == returns
37
+ # Test Object
38
+ # description: test object that was used as parent when this object was created. Can also be of type SUT if sut was the parent (ie. application objects)
39
+ # example: "@sut"
40
+ attr_accessor :parent
41
+
42
+ # Creates a new StateObject from XML source data.
43
+ #
44
+ # === params
45
+ # xml_source:: MobyUtil::XML::Element or String. Contains the root element of this state.
46
+ # parent:: TestObject, SUT or StateObject. Parent of this state object. Must be of type TestObjectComposition.
47
+ # === returns
48
+ # StateObject:: New StateObject
49
+ def initialize( xml_source, parent = nil )
50
+
51
+ xml_element = nil
52
+
53
+ if xml_source.kind_of?( MobyUtil::XML::Element )
54
+
55
+ xml_element = xml_source
56
+
57
+ elsif xml_source.kind_of?( String )
58
+
59
+ xml_element = MobyUtil::XML.parse_string(xml_source).root
60
+
61
+ else
62
+
63
+ Kernel::raise ArgumentError.new("The XML source must be a String or MobyUtil::XML::Element, it was of type '#{ xml_source.class.to_s }'.")
64
+
65
+ end
66
+
67
+ @parent = nil
68
+ add_parent( parent ) unless parent.nil?
69
+
70
+ self.xml_data= xml_element
71
+
72
+ @_child_object_cache = {}
73
+
74
+ # Create accessor methods for any child state objects.
75
+ TestObjectFactory.instance.create_child_accessors!( self )
76
+
77
+ end
78
+
79
+ # Tries to use the missing method id as a child object type and find an object based on it
80
+ def method_missing( method_id, *method_arguments )
81
+
82
+ hash_rule = method_arguments.first
83
+
84
+ # method mapping/aliases
85
+ case method_id
86
+
87
+ when :Button;
88
+ method_id = [ :Button, :QToolButton, :DuiButton, :HbPushButton, :softkey ]
89
+
90
+ when :List;
91
+ method_id = [ :QList, :HbListWidgetView, :DuiList ]
92
+
93
+ end
94
+
95
+ hash_rule = Hash.new unless hash_rule.kind_of? Hash
96
+ hash_rule[ :type ] = method_id
97
+
98
+ begin
99
+
100
+ return child( hash_rule )
101
+
102
+ rescue MobyBase::TestObjectNotFoundError, MobyBase::TestObjectNotVisibleError
103
+
104
+ hash_rule.delete(:type)
105
+
106
+ raise MobyBase::TestObjectNotFoundError.new(
107
+ "The state object with id: \"#{ self.id.to_s }\", type: \"#{ self.type.to_s }\" and name: \"#{ self.name.to_s }\" has no child object of type \"#{ method_id.inspect.to_s }\"" <<
108
+ ( hash_rule.empty? ? "" : " attributes: #{ hash_rule.inspect },"))
109
+ end
110
+
111
+ end
112
+
113
+
114
+ # Check to StateObject objects for equality (ie. contents, not if they are the same object).
115
+ # === param
116
+ # other_state_object:: StateObject this object is compared to.
117
+ # === returns
118
+ # true:: other_state_object is equal to this StateObject.
119
+ # false:: other_state_object is not equal to this StateObject.
120
+ def eql? (other_state_object)
121
+ self == other_state_object
122
+ end
123
+
124
+
125
+ # Verifies that another StateObject contains the same data as this object.
126
+ # type, id and name must match.
127
+ #
128
+ # == param
129
+ # other_state_object:: StateObject that this object is compared to.
130
+ # == returns
131
+ # true:: The other StateObject contains the same data as this one.
132
+ # false:: The other StateObject does notcontain the same data as this one.
133
+ # == raises
134
+ # nothing
135
+ def == (other_state_object)
136
+ return false unless other_state_object.instance_of?( MobyBase::StateObject )
137
+ return false unless self.type == other_state_object.type
138
+ return false unless self.id == other_state_object.id
139
+ return false unless self.name == other_state_object.name
140
+ return true
141
+ end
142
+
143
+
144
+ # Function to return type of the state object
145
+ # === returns
146
+ # type:: String value of the type
147
+ def type()
148
+ @type
149
+ end
150
+
151
+ # Function to return name of the state object
152
+ # === returns
153
+ # name String value of the name
154
+ def name()
155
+ @name
156
+ end
157
+
158
+ # Function to return id of the state object
159
+ # === returns
160
+ # id String value of the id
161
+ def id()
162
+ @object_id
163
+ end
164
+
165
+ # Sets the XML content of this state object. Also sets identification attributes based
166
+ # on the contents of the XML.
167
+ #
168
+ # === params
169
+ # xml_object:: MobyUtil::XML::Element. State as XML.
170
+ def xml_data=( xml_object )
171
+ @_xml_data = xml_object
172
+ @name = xml_object.attribute( 'name' )
173
+ @type = xml_object.attribute( 'type' )
174
+ @object_id = xml_object.attribute( 'id' )
175
+ end
176
+
177
+ # Returns a XML element representing this state object.
178
+ #
179
+ # === returns
180
+ # MobyUtil::XML::Element:: XML representation of this state object
181
+ def xml_data()
182
+
183
+ @_xml_data
184
+
185
+ end
186
+
187
+ # Function provides access to parameters of the state object
188
+ # === params
189
+ # name:: String defining the name of the attribute to get
190
+ # === returns
191
+ # String:: Value of the attribute as a string
192
+ # === raises
193
+ # ArgumentError:: name is not a String.
194
+ # AttributeNotFoundError:: if the requested attribute can not be found in the xml data of the object
195
+ def attribute( name )
196
+
197
+ # store xml_data to temp. variable
198
+ _xml_data = @_xml_data
199
+
200
+ Kernel::raise ArgumentError.new( "Wrong argument type %s for attribute argument (expected String)" % name.class ) unless name.class == String
201
+
202
+ Kernel::raise MobyBase::AttributeNotFoundError.new("Could not find attribute '#{ name.to_s }' for state object of type '#{ type.to_s }'.") if (
203
+ elements = _xml_data.xpath(
204
+ "attributes/attribute[translate(@name,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='#{ name.to_s.downcase }']"
205
+ )
206
+ ).size == 0
207
+
208
+ elements.first.content.strip
209
+
210
+ end
211
+
212
+ def get_cached_test_object!( object )
213
+
214
+ object_hash = object.hash
215
+
216
+ if @_child_object_cache.has_key?( object_hash )
217
+
218
+ object = @_child_object_cache[ object_hash ]
219
+
220
+ true
221
+
222
+ else
223
+
224
+ false
225
+
226
+ end
227
+
228
+ end
229
+
230
+ # Creates a state object for a child object of this state object
231
+ # Associates child object as current object's child.
232
+ # and associates self as child object's parent.
233
+ #
234
+ # NOTE:
235
+ # Subsequent calls to #child always returns reference to same child
236
+ # === params
237
+ # attributes:: Hash object holding information for identifying which child to create, eg. :type => :slider
238
+ # === returns
239
+ # StateObject:: new child state object or reference to existing child
240
+ def child( attributes )
241
+
242
+ identified_object_xml = MobyBase::TestObjectIdentificator.new( attributes ).find_object_data( @_xml_data )
243
+
244
+ child_object = StateObject.new( identified_object_xml, self )
245
+
246
+ # use cached test object if once already retrieved
247
+ get_cached_test_object!( child_object ).tap{ | found_in_cache |
248
+
249
+ # add child to objects cache
250
+ add_child( child_object ) unless found_in_cache
251
+
252
+ }
253
+
254
+ child_object
255
+
256
+ end
257
+
258
+ def inspect
259
+
260
+ "#{ self.to_s }\nName: #{ self.name.to_s } Type: #{ self.type.to_s } Id: #{ self.id.to_s }"
261
+
262
+ end
263
+
264
+ # enable hooking for performance measurement & debug logging
265
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
266
+
267
+
268
+ end # StateObject
269
+
270
+ end # MobyBase