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,3 @@
1
+ ruby html.rb > output.html
2
+ cat output.html
3
+
@@ -0,0 +1 @@
1
+ placeholder
@@ -0,0 +1,404 @@
1
+ #!/usr/bin/env ruby
2
+ ############################################################################
3
+ ##
4
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5
+ ## All rights reserved.
6
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
7
+ ##
8
+ ## This file is part of Testability Driver.
9
+ ##
10
+ ## If you have questions regarding the use of this file, please contact
11
+ ## Nokia at testabilitydriver@nokia.com .
12
+ ##
13
+ ## This library is free software; you can redistribute it and/or
14
+ ## modify it under the terms of the GNU Lesser General Public
15
+ ## License version 2.1 as published by the Free Software Foundation
16
+ ## and appearing in the file LICENSE.LGPL included in the packaging
17
+ ## of this file.
18
+ ##
19
+ ############################################################################
20
+
21
+ $tdriver_devtools_initialized = true
22
+
23
+ def safe_require( *paths )
24
+
25
+ found = false
26
+
27
+ paths.each{ | path |
28
+
29
+ begin
30
+
31
+ require path
32
+
33
+ found = true
34
+
35
+ break
36
+
37
+ rescue LoadError
38
+
39
+ #puts "path #{ path } not found"
40
+
41
+ end
42
+
43
+ }
44
+
45
+ abort("Unable to load one of files: %s" % paths.inspect ) unless found
46
+
47
+ end
48
+
49
+ require 'rubygems'
50
+ require 'rdoc/rdoc'
51
+ require 'optparse'
52
+ require 'nokogiri'
53
+
54
+ safe_require('tdriver/version.rb', File.expand_path( File.join( File.dirname( __FILE__ ), '../tdriver/version.rb' ) ) )
55
+ safe_require('tdriver/util/common/loader.rb', File.expand_path( File.join( File.dirname( __FILE__ ), '../tdriver/util/common/loader.rb' ) ) )
56
+
57
+ require 'tmpdir'
58
+ require 'fileutils'
59
+
60
+ # default options
61
+ @options = {
62
+
63
+ :verbose => false,
64
+ :tests => '.',
65
+ :delete => false
66
+
67
+ }
68
+
69
+ @optparse = OptionParser.new do | opts |
70
+
71
+ # Set a banner, displayed at the top of the help screen.
72
+ opts.banner = "Usage: #{ $0 } [options] [source] [destination]"
73
+
74
+ opts.separator( "" )
75
+
76
+ opts.separator "Specific options:"
77
+
78
+ opts.on(
79
+
80
+ '-g',
81
+ '--generate TYPE',
82
+ 'Available types:',
83
+ ' doc : Generate documentation from source files.',
84
+ ' Feature test result files and images are optional',
85
+ ' ',
86
+ ' Default source folder is "behaviours/"',
87
+ ' Default destination file is "doc/document.xml"',
88
+ ' ',
89
+ ' behaviours : Generate behaviour XML files from implementation.',
90
+ ' All behaviour implementation files with .rb extension in',
91
+ ' source folder and its subfolders will be processed.',
92
+ ' ',
93
+ ' Default source folder is current folder.',
94
+ ' Default destination folder is "behaviours/"',
95
+ ' ',
96
+ ' both : Generate behaviour XML files and documentation',
97
+ ' Behaviour XML files are saved to temp. folder and deleted',
98
+ ' after documentation XML is saved. Copies also all XSLT ',
99
+ ' templates to destination folder. See -r flag also.',
100
+ ' ',
101
+ ' Default source folder (implementation) is current folder.',
102
+ ' Default destination folder is "doc/document.xml"',
103
+ ' '
104
+
105
+ ) do | mode |
106
+
107
+ case mode.downcase.to_s
108
+
109
+ when 'doc'
110
+ @options[ :generate ] = mode.to_sym
111
+ @options[ :source ] ||= 'behaviours/'
112
+ @options[ :destination ] ||= 'doc/document.xml'
113
+
114
+ when 'behaviours'
115
+ @options[ :generate ] = mode.to_sym
116
+ @options[ :source ] ||= '.'
117
+ @options[ :destination ] ||= 'behaviours/'
118
+
119
+ when 'both'
120
+ @options[ :generate ] = mode.to_sym
121
+ @options[ :source ] ||= '.'
122
+ @options[ :destination_behaviours ] = File.expand_path( File.join( Dir.tmpdir, "tdriver-devtools-behaviours" ) )
123
+ @options[ :destination ] ||= 'doc/document.xml'
124
+
125
+ else
126
+
127
+ puts "Invalid value for generate option: #{ mode }", ""
128
+ puts opts, ""
129
+ exit
130
+
131
+ end
132
+
133
+ end
134
+
135
+ =begin
136
+ opts.on(
137
+ '-b',
138
+ '--behaviours [FOLDER]',
139
+ 'Source folder for behaviour XML files (DOC)'
140
+ ) do | folder |
141
+
142
+ end
143
+ =end
144
+
145
+ opts.on(
146
+ '-i',
147
+ '--images [FOLDER]',
148
+ 'Source folder for all images used in documentation'
149
+ ) do | folder |
150
+
151
+ end
152
+
153
+ opts.on(
154
+ '-t',
155
+ '--tests [FOLDER]',
156
+ 'Source folder for feature test result files', ' '
157
+ ) do | folder |
158
+
159
+ @options[ :tests ] = folder
160
+
161
+ end
162
+
163
+ =begin
164
+ opts.on(
165
+ '-o',
166
+ '--output FOLDER',
167
+ 'User defined destionation folder for documentation and',
168
+ 'behaviours XML files. Default output folder is either',
169
+ '"doc" or "behaviours"', ' '
170
+
171
+ ) do | folder |
172
+
173
+ end
174
+ =end
175
+
176
+ opts.on(
177
+ '-r',
178
+ '--render',
179
+ 'Render also HTML output when generating documentation' ) do
180
+
181
+ @options[:render] = true
182
+
183
+ end
184
+
185
+ opts.on(
186
+ '-d',
187
+ '--delete',
188
+ 'Delete all existing behaviour XML files from output folder before generating new.',
189
+ 'Warning! Please option use this option with caution' ) do
190
+
191
+ @options[:delete] = true
192
+
193
+ end
194
+
195
+ opts.separator ""
196
+ opts.separator "Common options:"
197
+
198
+ opts.on( '-v', '--version', 'Testability Driver version information' ) do
199
+
200
+ puts ENV['TDRIVER_VERSION']
201
+ exit
202
+
203
+ end
204
+
205
+ opts.on( '-V', '--verbose', 'Output more information' ) do
206
+
207
+ @options[ :verbose ] = true
208
+
209
+ end
210
+
211
+ # This displays the help screen, all programs are
212
+ # assumed to have this option.
213
+ opts.on_tail("-h", "--help", "Display this message") do
214
+
215
+ puts '', opts, ''
216
+ exit
217
+
218
+ end
219
+
220
+ # show help if no command line arguments given
221
+ if ARGV.empty?
222
+
223
+ puts '', opts, ''
224
+ exit
225
+
226
+ end
227
+
228
+ end
229
+
230
+ def execute_tdriver_devtools
231
+
232
+ @optparse.parse!
233
+
234
+ case @options[ :generate ]
235
+
236
+ when :behaviours
237
+
238
+ $source = File.expand_path( ARGV[ 0 ] || @options[ :source ] )
239
+ $destination = File.expand_path( ARGV[ 1 ] || @options[ :destination ] )
240
+
241
+ destination_folder = File.expand_path( $destination )
242
+
243
+ if MobyUtil::FileHelper.folder_exist?( destination_folder )
244
+
245
+ if @options[ :delete ] == true
246
+
247
+ Dir.glob( File.join( destination_folder, '**', '**', '*.xml' ) ) do |entry|
248
+
249
+ begin
250
+
251
+ File.delete( entry )
252
+
253
+ rescue Exception => exception
254
+
255
+ warn("Unable to delete file %s (%s: %s)" % [ entry, exception.class, exception.message ] )
256
+
257
+ end
258
+
259
+ end
260
+
261
+ end
262
+
263
+ else
264
+
265
+ begin
266
+
267
+ MobyUtil::FileHelper.mkdir_path( destination_folder )
268
+
269
+ rescue Exception => exception
270
+
271
+ raise RuntimeError.new("Unable to create destination folder %s (%s: %s)" % [ destination_folder, exception.class, exception.message ])
272
+
273
+ end
274
+
275
+ end
276
+
277
+ # run behaviour xml generator
278
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/xml/generate.rb' ) )
279
+
280
+ puts ''
281
+
282
+ when :doc
283
+
284
+ $source = File.expand_path( ARGV[0] || @options[ :source ] )
285
+ $tests = File.expand_path( @options[ :tests ] )
286
+ $destination = File.expand_path( ARGV[1] || @options[ :destination ] )
287
+
288
+ destination_folder = File.dirname( $destination )
289
+
290
+ begin
291
+
292
+ unless MobyUtil::FileHelper.folder_exist?( destination_folder )
293
+
294
+ MobyUtil::FileHelper.mkdir_path( destination_folder )
295
+
296
+ end
297
+
298
+ rescue Exception => exception
299
+
300
+ raise RuntimeError.new("Unable to create destination folder %s (%s: %s)" % [ destination_folder, exception.class, exception.message ])
301
+
302
+ end
303
+
304
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'doc/generate.rb' ) ) #'lib/tdriver-devtools/behaviour/xml/generate.rb'
305
+
306
+ when :both
307
+
308
+ destination_folder = @options[ :destination_behaviours ]
309
+
310
+ begin
311
+ unless MobyUtil::FileHelper.folder_exist?( destination_folder )
312
+ MobyUtil::FileHelper.mkdir_path( destination_folder )
313
+ else
314
+ if @options[ :delete ] == true
315
+ Dir.glob( File.join( destination_folder, '*.xml' ) ) do |entry|
316
+ begin
317
+ #puts "Delete #{ entry }"
318
+ File.delete( entry )
319
+ rescue Exception => exception
320
+ warn("Unable to delete file %s (%s: %s)" % [ entry, exception.class, exception.message ] )
321
+ end
322
+ end
323
+ end
324
+ end
325
+ rescue Exception => exception
326
+ raise RuntimeError.new("Unable to create destination folder %s (%s: %s)" % [ destination_folder, exception.class, exception.message ])
327
+ end
328
+
329
+ $source = File.expand_path( ARGV[ 0 ] || @options[ :source ] )
330
+ $destination = destination_folder
331
+
332
+ # run 'implementation to behaviour xml' generator
333
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/xml/generate.rb' ) )
334
+
335
+ # documentation
336
+ $source = destination_folder
337
+ $tests = File.expand_path( @options[ :tests ] )
338
+ $destination = File.expand_path( ARGV[1] || @options[ :destination ] )
339
+ destination_folder = File.dirname( $destination )
340
+
341
+ begin
342
+ unless MobyUtil::FileHelper.folder_exist?( destination_folder )
343
+ MobyUtil::FileHelper.mkdir_path( destination_folder )
344
+ end
345
+ rescue Exception => exception
346
+ raise RuntimeError.new("Unable to create destination folder %s (%s: %s)" % [ destination_folder, exception.class, exception.message ])
347
+ end
348
+
349
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'doc/generate.rb' ) )
350
+
351
+ begin
352
+
353
+ FileUtils.cp( Dir.glob( File.expand_path( File.join( File.dirname( __FILE__ ), 'doc/xslt/*.xsl' ) ) ), destination_folder )
354
+
355
+ puts "Template XSLT file(s) copied to destination folder succesfully\n\n"
356
+
357
+ rescue Exception => exception
358
+
359
+ warn("Error while copying template xslt files to destination due to %s (%s)" % [ exception.message, exception.class ] )
360
+
361
+ end
362
+
363
+ if @options[:render] == true
364
+
365
+ begin
366
+
367
+ doc = Nokogiri::XML( open( $destination , 'r' ).read )
368
+
369
+ puts "Generating HTML output file(s) of documentation"
370
+
371
+ Dir.glob( File.expand_path( File.join( destination_folder, '*.xsl' ) ) ) do | template |
372
+
373
+ File.open(
374
+ File.join(
375
+ destination_folder,
376
+ "#{ File.basename( $destination ).gsub( File.extname( $destination ), '' ) }_#{ File.basename( template ).gsub( File.extname( template ), '' ) }.html"
377
+ ),
378
+ 'w'
379
+ ){ | file |
380
+
381
+ file << Nokogiri::XSLT( open( template, 'r' ).read ).transform( doc )
382
+
383
+ }
384
+
385
+ end
386
+
387
+ rescue Exception => exception
388
+
389
+ warn("Error while geneating HTML files from template(s) due to %s (%s)" % [ exception.message, exception.class ] )
390
+
391
+ end
392
+
393
+ end
394
+
395
+ else
396
+
397
+ puts '', @optparse, ''
398
+
399
+ end
400
+
401
+ end
402
+
403
+ execute_tdriver_devtools
404
+
@@ -0,0 +1,233 @@
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 MobyBehaviour
21
+
22
+ module QT
23
+
24
+ # == description
25
+ # This module contains demonstration implementation containing tags for documentation generation using gesture as an example
26
+ #
27
+ # == behaviour
28
+ # QtExampleGestureBehaviour
29
+ #
30
+ # == requires
31
+ # testability-driver-sut-qt-plugin
32
+ #
33
+ # == input_type
34
+ # touch
35
+ #
36
+ # == sut_type
37
+ # qt
38
+ #
39
+ # == sut_version
40
+ # *
41
+ #
42
+ # == objects
43
+ # *;sut
44
+ #
45
+ module Gesture
46
+
47
+ #include MobyBehaviour::QT::Behaviour
48
+
49
+ attr_accessor :x
50
+ attr_reader :y
51
+ attr_writer :z
52
+
53
+ def y
54
+
55
+ end
56
+
57
+ def x=(value)
58
+ end
59
+
60
+ # == description
61
+ # Cause a flick operation on the screen.
62
+ #
63
+ # == arguments
64
+ # argument1
65
+ # Integer
66
+ # description: Example argument1
67
+ # example: 10
68
+ # default:
69
+ # Hash
70
+ # description: Example argument 1 type 2
71
+ # example: { :optional_1 => "value_1", :optional_2 => "value_2" }
72
+ # default:
73
+ #
74
+ # argument2
75
+ # String
76
+ # description: Example argument2
77
+ # example: "Hello"
78
+ # default:
79
+ #
80
+ # == returns
81
+ # String
82
+ # description: Return value type
83
+ # example: "World"
84
+ #
85
+ # == exceptions
86
+ # RuntimeError
87
+ # description: example exception
88
+ #
89
+ # ArgumentError
90
+ # description: example exception
91
+ #
92
+ # == example
93
+ # flick( :Down, :Left, { :optional_1 => "value_1", :optional_2 => "value_2" } )
94
+ #
95
+ # == info
96
+ # See method X, table at Y
97
+ #
98
+ # == howto
99
+ # Example1
100
+ # description: Basic use
101
+ # code: @sut = TDriver.sut( :Id => "sut_qt" )
102
+ # app = @sut.application
103
+ # app.QPushButton( :text => "Close" ).flick :Left
104
+ #
105
+ def flick( direction, button = :Left, z = ',', optional_params = {}, y = ',' )
106
+ begin
107
+ use_tap_screen = optional_params[:use_tap_screen].nil? ? MobyUtil::Parameter[ @sut.id][ :use_tap_screen, 'false'] :
108
+ optional_params[:use_tap_screen].to_s
109
+ optional_params[:useTapScreen] = use_tap_screen
110
+
111
+ speed = calculate_speed(@sut.parameter(:gesture_flick_distance), @sut.parameter(:gesture_flick_speed))
112
+ distance = @sut.parameter(:gesture_flick_distance).to_i
113
+ params = {:gesture_type => :MouseGesture, :direction => direction, :speed => speed, :distance => distance, :isDrag => false, :button => button, :useTapScreen => use_tap_screen}
114
+ params.merge!(optional_params)
115
+
116
+ do_gesture(params)
117
+ do_sleep(speed)
118
+
119
+ rescue Exception => e
120
+
121
+ MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed flick with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
122
+ Kernel::raise e
123
+ end
124
+
125
+ MobyUtil::Logger.instance.log "behaviour" , "PASS;Operation flick executed successfully with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
126
+
127
+ nil
128
+ end
129
+
130
+
131
+ private
132
+
133
+ # Performs the actual gesture operation.
134
+ # Verifies that the parameters are correct and send the command
135
+ # to the sut.
136
+ # gesture_type: :MouseGesture, :MouseGestureTo, :MouseGestureToCoordinates
137
+ # params = {:direction => :Up, duration => 2, :distance =>100, :isDrag =>false, :isMove =>false }
138
+ def do_gesture(params)
139
+ validate_gesture_params!(params)
140
+
141
+ if attribute('objectType') == 'Embedded'
142
+ params['x'] = center_x
143
+ params['y'] = center_y
144
+ params['useCoordinates'] = 'true'
145
+ end
146
+
147
+ command = command_params #in qt_behaviour
148
+ command.command_name(params[:gesture_type].to_s)
149
+ command.command_params( params )
150
+ @sut.execute_command( command )
151
+ end
152
+
153
+ def validate_gesture_params!(params)
154
+ #direction
155
+ if params[:gesture_type] == :MouseGesture
156
+ if params[:direction].kind_of?(Integer)
157
+ raise ArgumentError.new( "Invalid direction." ) unless 0 <= params[:direction].to_i and params[:direction].to_i <= 360
158
+ else
159
+ raise ArgumentError.new( "Invalid direction." ) unless @@_valid_directions.include?(params[:direction])
160
+ params[:direction] = @@_direction_map[params[:direction]]
161
+ end
162
+ #distance
163
+ params[:distance] = params[:distance].to_i unless params[:distance].kind_of?(Integer)
164
+ raise ArgumentError.new( "Distance must be an integer and greater than zero." ) unless params[:distance] > 0
165
+ elsif params[:gesture_type] == :MouseGestureToCoordinates
166
+ raise ArgumentError.new("X and Y must be integers.") unless params[:x].kind_of?(Integer) and params[:y].kind_of?(Integer)
167
+ elsif params[:gesture_type] == :MouseGestureTo
168
+ raise ArgumentError.new("targetId and targetType must be defined.") unless params[:targetId] and params[:targetType]
169
+ end
170
+
171
+ #duration/speed
172
+ params[:speed] = params[:speed].to_f unless params[:speed].kind_of?(Numeric)
173
+ raise ArgumentError.new( "Duration must be a number and greated than zero, was:" + params[:speed].to_s) unless params[:speed] > 0
174
+ duration_secs = params[:speed].to_f
175
+ duration_secs = duration_secs*1000
176
+ params[:speed] = duration_secs.to_i
177
+
178
+ #mouseMove true always
179
+ params[:mouseMove] = true
180
+
181
+ params[:button] = :Left unless params[:button]
182
+ raise ArgumentError.new( "Invalid button." ) unless @@_valid_buttons.include?(params[:button])
183
+ params[:button] = @@_buttons_map[params[:button]]
184
+
185
+ if params[:isMove] == true
186
+ params[:press] = 'false'
187
+ params[:release] = 'false'
188
+ end
189
+
190
+ end
191
+
192
+
193
+ def do_sleep(time)
194
+
195
+ if MobyUtil::Parameter[ @sut.id ][ :sleep_disabled, nil ] != 'true'
196
+ time = time.to_f
197
+ time = time * 1.3
198
+ #for flicks the duration of the gesture is short but animation (scroll etc..) may not
199
+ #so wait at least one second
200
+ time = 1 if time < 1
201
+ sleep time
202
+ end
203
+
204
+ end
205
+
206
+ def calculate_speed(distance, speed)
207
+
208
+ distance = distance.to_f
209
+ speed = speed.to_f
210
+ duration = distance/speed
211
+ duration
212
+
213
+ end
214
+
215
+ def distance_to_point(x, y)
216
+
217
+ x = x.to_i
218
+ y = y.to_i
219
+ dist_x = x - center_x.to_i
220
+ dist_y = y - center_y.to_i
221
+
222
+ return 0 if dist_y == 0 and dist_x == 0
223
+ distance = Math.hypot( dist_x, dist_y )
224
+ distance
225
+
226
+ end
227
+
228
+ end
229
+
230
+ end
231
+ end
232
+
233
+ #MobyUtil::Logger.instance.hook_methods( MobyBehaviour::QT::Gesture )