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,5 @@
1
+ Feature: %s
2
+ As a test scripter writer
3
+ I want to use %s attribute to [DO_SOMETHING] in [TARGET_APPLICATION]
4
+ so that I can test the %s behaviour
5
+
@@ -0,0 +1,5 @@
1
+ Feature: %s
2
+ As a test scripter writer
3
+ I want to use %s method to [DO_SOMETHING] in [TARGET_APPLICATION]
4
+ so that I can test the %s behaviour
5
+
@@ -0,0 +1,5 @@
1
+ Scenario: Testing %s attribute (Rename this to be more descriptive)
2
+ Given I launch application [APPLICATION_NAME] as @app
3
+ When I execute "@app.[SOME_OBJECT].%s"
4
+ Then [ADD_YOUR_VERIFICATION_HERE]
5
+
@@ -0,0 +1,5 @@
1
+ Scenario: Testing %s method with %s argument%s (Rename this to be more descriptive)
2
+ Given I launch application [APPLICATION_NAME] as @app
3
+ When I execute "@app.[SOME_OBJECT].%s(%s)"
4
+ Then [ADD_YOUR_VERIFICATION_HERE]
5
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env sh
2
+ rm -rf output
3
+ ruby generate.rb example/flick-example.rb
data/lib/tdriver.rb ADDED
@@ -0,0 +1,26 @@
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
+ # load tdriver resources and framework
24
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/env' ) )
25
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/version' ) )
26
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/tdriver' ) )
@@ -0,0 +1,32 @@
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 is used to be as template for all behaviours
24
+ # TestObject can verify whether it has some behaviour by calling:
25
+ # TestObject.kind_of? MobyBehaviour::Abstract
26
+
27
+ module MobyBehaviour
28
+
29
+ module Behaviour
30
+
31
+ end
32
+ end
@@ -0,0 +1,94 @@
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
+ module MobyBehaviour
21
+
22
+ # == description
23
+ # Generic methods for applying behaviours to target object
24
+ #
25
+ # == behaviour
26
+ # GenericObjectBehaviourComposition
27
+ #
28
+ # == requires
29
+ # *
30
+ #
31
+ # == input_type
32
+ # *
33
+ #
34
+ # == sut_type
35
+ # *
36
+ #
37
+ # == sut_version
38
+ # *
39
+ #
40
+ # == objects
41
+ # *;sut
42
+ #
43
+ module ObjectBehaviourComposition
44
+
45
+ public
46
+
47
+ # == description
48
+ # Apply all behaviour modules to target object which meets the given rules. Target object can be either type of "sut", "application" or "*" (any test object).
49
+ # == tables
50
+ # apply_behaviour_table
51
+ # title: Hash table details
52
+ # |Key|Description|Example|Required|
53
+ # |:object_type| Rule for object type(s). In following example all generic test object and application specific behaviours are accepted. | ["*", "application"] | Yes |
54
+ # |:sut_type| Rule for SUT type(s). In following example all non-SUT specific and QT specific behaviours are applied. | ["*", "QT"] | Yes |
55
+ # |:input_type| Rule defining for SUT input type(s). In following example all SUT input types and touch screen specific behaviours are applied. | ["*", "touch"] | Yes |
56
+ # |:version| Rule for SUT version(s). In following example all all SUT versions and SUT QT v1.0 specific behaviours are applied. | ["*", "1.0"] | Yes |
57
+ #
58
+ # == arguments
59
+ # rules
60
+ # Hash
61
+ # description: Target object's SUT, type and version requirements
62
+ # example: { :version=>["*", "1.0"], :object_type=>["*", "application"], :sut_type=>["*", "QT"], :input_type=>["*", "touch"] }
63
+ #
64
+ # == returns
65
+ # Array
66
+ # description: Array of applied behaviour module indexes (Fixnum)
67
+ # example: [0, 3, 4, 6, 7, 8, 9]
68
+ def apply_behaviour!( rules )
69
+
70
+ sut = ( sut = self ).kind_of?( MobyBase::SUT ) ? sut : sut.sut
71
+
72
+ MobyBase::BehaviourFactory.instance.apply_behaviour!( { :sut_type => [ '*', sut.ui_type ], :version => [ '*', sut.ui_version ] }.merge( rules ).merge( { :object => self } ) )
73
+
74
+ end
75
+
76
+ private
77
+
78
+ # behaviour specific initialization
79
+ def self.extended( target )
80
+
81
+ target.instance_exec{
82
+
83
+ # array of extended behaviours to target object
84
+ @object_behaviours = []
85
+
86
+ }
87
+
88
+ end
89
+ # enable hooking for performance measurement & debug logging
90
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
91
+
92
+ end # ObjectBehaviourComposition
93
+
94
+ end # MobyBehaviour
@@ -0,0 +1,262 @@
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
+ module MobyBehaviour
21
+
22
+ # == description
23
+ # Generic methods for inspecting test object and it's methods
24
+ #
25
+ # == behaviour
26
+ # GenericObjectDescription
27
+ #
28
+ # == requires
29
+ # *
30
+ #
31
+ # == input_type
32
+ # *
33
+ #
34
+ # == sut_type
35
+ # *
36
+ #
37
+ # == sut_version
38
+ # *
39
+ #
40
+ # == objects
41
+ # *;sut
42
+ #
43
+ module ObjectBehaviourDescription
44
+
45
+ # == description
46
+ # Return list of behaviour name(s) which caller object contains. This method may be useful when implementing/testing custom behaviour modules.
47
+ #
48
+ # == arguments
49
+ # return_indexes
50
+ # TrueClass
51
+ # description: Returns result as array of behaviour indexes
52
+ # example: true
53
+ # FalseClass
54
+ # description: Returns result as array of behaviour names
55
+ # example: false
56
+ #
57
+ # == returns
58
+ # Array
59
+ # description: If 'return_indexes' is true, result is a array of indexes (Fixnum)
60
+ # example: [1,2,3,4,5]
61
+ #
62
+ # Array
63
+ # description: If 'return_indexes' is false, result is a array of behaviour names (String)
64
+ # example: ["GenericApplication", "GenericFind", "GenericObjectComposition"]
65
+ #
66
+ # == footer
67
+ #
68
+ def behaviours( return_indexes = false )
69
+
70
+ return_indexes ? @object_behaviours : @object_behaviours.collect{ | index | MobyBase::BehaviourFactory.instance.get_behaviour_at_index( index )[ :name ] }.uniq.compact.sort
71
+
72
+ end
73
+
74
+ # == description
75
+ # Returns a list of the names of (behaviour) methods publicly accessible in object. This method may be useful when implementing/testing custom behaviour modules.
76
+ # == returns
77
+ # Array
78
+ # description: List of method names
79
+ # example: ["application?", "close", "closable?", "describe"]
80
+ def object_methods
81
+
82
+ [].tap{ | methods |
83
+ @object_behaviours.each{ | index |
84
+ MobyBase::BehaviourFactory.instance.get_behaviour_at_index( index )[ :methods ].keys.each{ | key | methods << key.to_s }
85
+ }
86
+ }.uniq.compact.sort
87
+
88
+ end
89
+
90
+ # == description
91
+ # Return brief method description either as return value or printed to STDOUT. This method may be useful when implementing/testing custom behaviour modules.
92
+ #
93
+ # == arguments
94
+ # method_name
95
+ # String
96
+ # description: Name of the method
97
+ # example: "type"
98
+ #
99
+ # print
100
+ # TrueClass
101
+ # description: Print result to STDOUT and return as String
102
+ # example: true
103
+ # FalseClass
104
+ # description: Return result as Hash instead of printing to STDOUT
105
+ # example: false
106
+ #
107
+ # return_result
108
+ # TrueClass
109
+ # description: Pass result as return value
110
+ # example: true
111
+ # FalseClass
112
+ # description: Do not pass result as return value
113
+ # example: false
114
+ #
115
+ # == returns
116
+ # String
117
+ # description: String representation of object description/details
118
+ # example: "Description:\nReturns type of the test object\n\nExample:\ntype"
119
+ #
120
+ # Hash
121
+ # description: Hash representation of object description/details
122
+ # example: { :description=>"Returns type of the test object", :example=>"type" }
123
+ #
124
+ # NilClass
125
+ # description: When 'return_result' is false
126
+ # example: nil
127
+ #
128
+ # == footer
129
+ #
130
+ def describe_method( method_name, print = true, return_result = false )
131
+
132
+ # convert to symbol if method_name is a string
133
+ method_name = method_name.to_sym if method_name.kind_of?( String )
134
+
135
+ Kernel::raise ArgumentError.new("Wrong argument type for method name. (Actual: #{ method_name.class }, Expected: Symbol)") unless method_name.kind_of?( Symbol )
136
+
137
+ # print result to stdout if argument not boolean
138
+ print = true unless [ TrueClass, FalseClass ].include? print.class
139
+
140
+ # return result not printed out to stdout
141
+ return_result = true unless print
142
+
143
+ result_hash = nil
144
+
145
+ @object_behaviours.each{ | index |
146
+
147
+ behaviour = MobyBase::BehaviourFactory.instance.get_behaviour_at_index( index )
148
+
149
+ if behaviour[ :methods ].keys.include? method_name
150
+ method_details = behaviour[:methods][ method_name ]
151
+ result_hash = { :description => method_details[ :description ], :example => method_details[ :example ] }
152
+ break;
153
+ end
154
+
155
+ }
156
+
157
+ Kernel::raise RuntimeError.new("No such method for object type of #{ self.type }") if result_hash.nil?
158
+
159
+ if print
160
+
161
+ result = ""
162
+
163
+ [ :description, :example ].each{ | key |
164
+ tmp_hash = result_hash[ key ]
165
+ result << "\n#{ key.to_s.capitalize }:\n#{ tmp_hash }\n"
166
+ }
167
+
168
+ puts result
169
+
170
+ else
171
+
172
+ result = result_hash
173
+
174
+ end
175
+
176
+ ( return_result ? result : nil )
177
+
178
+ end
179
+
180
+ # == description
181
+ # Return list of methods and behaviour name(s) which caller object contains. This method may be useful when implementing/testing custom behaviour modules.
182
+ #
183
+ # == arguments
184
+ # print
185
+ # TrueClass
186
+ # description: Print result to STDOUT and return as String
187
+ # example: true
188
+ # FalseClass
189
+ # description: Return result as Hash instead of printing to STDOUT
190
+ # example: false
191
+ #
192
+ # return_result
193
+ # TrueClass
194
+ # description: Pass result as return value
195
+ # example: true
196
+ # FalseClass
197
+ # description: Do not pass result as return value
198
+ # example: false
199
+ #
200
+ # == returns
201
+ # String
202
+ # description: String representation of object details
203
+ # example: "Object:\n sut => sut_qt\n type => application\n\nBehaviours:\n GenericApplication\n\nMethods:\n application?\n"
204
+ #
205
+ # Hash
206
+ # description: Hash representation of object details
207
+ # example: { :methods=>["application?"], :behaviours=>["GenericApplication"], :object=>{:sut=>:sut_qt, :type=>"application"} }
208
+ #
209
+ # NilClass
210
+ # description: When 'return_result' is false
211
+ # example: nil
212
+ #
213
+ # == footer
214
+ #
215
+ def describe( print = true, return_result = false )
216
+
217
+ # print result to stdout if argument not boolean
218
+ print = true unless [ TrueClass, FalseClass ].include? print.class
219
+
220
+ # return result not printed out to stdout
221
+ return_result = true unless print
222
+
223
+ result_hash = {
224
+
225
+ :object => { :type => self.type, :sut => self.kind_of?( MobyBase::SUT ) ? self.id : self.sut.id },
226
+ :methods => object_methods,
227
+ :behaviours => behaviours
228
+ }
229
+
230
+ if print
231
+
232
+ result = ""
233
+
234
+ [:object, :behaviours, :methods].each{ | key, value |
235
+ value = result_hash[ key ]
236
+ result << "\n#{ key.to_s.capitalize }:\n"
237
+ case value.class.to_s
238
+ when "Array": result << "\t" << value.join("\n\t") << "\n"
239
+ when "Hash": result << value.collect{ | key, value | "\t#{ key } => #{ value }" }.join("\n") << "\n"
240
+ #else
241
+ #result << "\t#{ value }\n"
242
+ end
243
+ }
244
+
245
+ puts result
246
+
247
+ else
248
+
249
+ result = result_hash
250
+
251
+ end
252
+
253
+ ( return_result ? result : nil )
254
+
255
+ end
256
+
257
+ # enable hooking for performance measurement & debug logging
258
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
259
+
260
+ end # ObjectBehaviourDescription
261
+
262
+ end # MobyBehaviour