testability-driver 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/bin/start_app_perf +6 -6
  2. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +4 -4
  3. data/lib/tdriver-devtools/doc/xslt/template.xsl +103 -21
  4. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +1 -1
  5. data/lib/tdriver/base/command_data/loader.rb +6 -2
  6. data/lib/tdriver/base/loader.rb +21 -14
  7. data/lib/tdriver/base/state_object.rb +1 -1
  8. data/lib/tdriver/base/sut/controller.rb +8 -2
  9. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +103 -46
  10. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +2 -2
  11. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +1 -1
  12. data/lib/tdriver/base/sut/generic/commands/application.rb +18 -278
  13. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +1 -1
  14. data/lib/tdriver/base/sut/sut.rb +1 -1
  15. data/lib/tdriver/base/test_object/abstract.rb +1 -1
  16. data/lib/tdriver/base/test_object/adapter.rb +4 -1
  17. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +3 -3
  18. data/lib/tdriver/base/test_object/behaviours/test_object.rb +61 -24
  19. data/lib/tdriver/base/test_object/cache.rb +6 -4
  20. data/lib/tdriver/base/test_object/factory.rb +4 -2
  21. data/lib/tdriver/base/test_object/loader.rb +23 -14
  22. data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
  23. data/lib/tdriver/base/test_object/xml/adapter.rb +4 -1
  24. data/lib/tdriver/report/report_test_run.rb +1 -1
  25. data/lib/tdriver/report/report_writer.rb +4 -3
  26. data/lib/tdriver/util/common/boolean.rb +10 -13
  27. data/lib/tdriver/util/common/environment.rb +8 -7
  28. data/lib/tdriver/util/common/hash.rb +5 -5
  29. data/lib/tdriver/util/common/numeric.rb +5 -5
  30. data/lib/tdriver/util/common/object.rb +3 -3
  31. data/lib/tdriver/util/common/retryable.rb +65 -2
  32. data/lib/tdriver/util/common/string.rb +4 -4
  33. data/lib/tdriver/util/database/access.rb +9 -11
  34. data/lib/tdriver/util/fixture/service.rb +54 -0
  35. data/lib/tdriver/util/localisation/localisation.rb +3 -2
  36. data/lib/tdriver/util/logger/logger.rb +55 -41
  37. data/lib/tdriver/util/parameter/parameter.rb +38 -7
  38. data/lib/tdriver/util/xml/abstraction.rb +8 -8
  39. data/lib/tdriver/util/xml/builder.rb +1 -1
  40. data/lib/tdriver/util/xml/xml.rb +11 -11
  41. data/lib/tdriver/verify/verify.rb +33 -36
  42. data/lib/tdriver/version.rb +1 -1
  43. data/xml/defaults/sut_generic.xml +1 -29
  44. data/xml/templates/generic.xml +28 -0
  45. metadata +48 -17
data/bin/start_app_perf CHANGED
@@ -72,13 +72,13 @@ def run(iteration)
72
72
  #puts events
73
73
  doc = Nokogiri::XML.parse(events)
74
74
  first_time_stamp = nil
75
- node_set = doc.xpath('//object[@name = "QtApplicationEvents"]/objects/object')
75
+ node_set = doc.xpath('//obj[@name = "QtApplicationEvents"]/obj')
76
76
  timer_counter = 0
77
77
  index = 0
78
78
  target_object = nil
79
79
  while(index < node_set.size)
80
80
  node = node_set.at(index)
81
- time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
81
+ time_str = node.xpath("#{node.path}/attr[@name = \"timeStamp\"]").first.text
82
82
  time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
83
83
  if (first_time_stamp == nil)
84
84
  first_time_stamp = time_stamp
@@ -92,7 +92,7 @@ def run(iteration)
92
92
  delta_time = delta_time + delta_time_milliseconds
93
93
 
94
94
  strOut << (delta_time).to_s << "\t" << event_name
95
- target_object = node.xpath("#{node.path}/objects/object").first
95
+ target_object = node.xpath("#{node.path}/obj").first
96
96
  if(target_object)
97
97
  target_object_name = target_object.attribute("name").text
98
98
  target_object_type = target_object.attribute("type").text
@@ -114,16 +114,16 @@ def run(iteration)
114
114
  if !@settings[:signals].empty?
115
115
  signals = app.fixture('signal', 'get_signal')
116
116
  app.fixture('signal', 'remove_signals')
117
- #puts signals
117
+ #puts signals
118
118
  doc = Nokogiri::XML.parse(signals)
119
119
  first_time_stamp = nil
120
- node_set = doc.xpath('//tasInfo[@name = "QtSignals"]/object')
120
+ node_set = doc.xpath('//tasInfo[@name = "QtSignals"]/obj')
121
121
  timer_counter = 0
122
122
  index = 0
123
123
  target_object = nil
124
124
  while(index < node_set.size)
125
125
  node = node_set.at(index)
126
- time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
126
+ time_str = node.xpath("#{node.path}/attr[@name = \"timeStamp\"]").first.text
127
127
  time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
128
128
  if (first_time_stamp == nil)
129
129
  first_time_stamp = time_stamp
@@ -1439,7 +1439,7 @@ EXAMPLE
1439
1439
  # generate arguments xml
1440
1440
  arguments = ( feature.last[:arguments] || {} ).collect{ | arg |
1441
1441
 
1442
- p arg
1442
+ #p arg
1443
1443
 
1444
1444
  # generate argument types template
1445
1445
  arg.collect{ | argument |
@@ -1881,7 +1881,7 @@ EXAMPLE
1881
1881
 
1882
1882
  warn("Warning! One of the behaviour modules is already using name '#{ module_header[:behaviour] }', saving as #{ xml_file_name }")
1883
1883
 
1884
- sleep 1
1884
+ #sleep 1
1885
1885
 
1886
1886
  end
1887
1887
 
@@ -1898,7 +1898,7 @@ EXAMPLE
1898
1898
  xml_file_name = ( @module_path[1..-1].join("") ) + '.xml'
1899
1899
 
1900
1900
  warn("Warning: #{ @module_path.join("::") } does not have behaviour (module) description defined, saving as %s " % xml_file_name )
1901
- sleep 2
1901
+ #sleep 2
1902
1902
 
1903
1903
  if @created_files.has_key?( xml_file_name )
1904
1904
 
@@ -1906,7 +1906,7 @@ EXAMPLE
1906
1906
 
1907
1907
  xml_file_name = ( @module_path[1..-1].join("") ) + '_duplicate_name.xml'
1908
1908
 
1909
- sleep 1
1909
+ #sleep 1
1910
1910
 
1911
1911
  end
1912
1912
 
@@ -490,7 +490,32 @@
490
490
  <!-- method: call example using parameters -->
491
491
  <xsl:if test="@type='method'">
492
492
 
493
- <xsl:text>object.</xsl:text><xsl:value-of select="@name" />
493
+ <!-- contains($type/@name,' ') -->
494
+
495
+ <!--
496
+
497
+ <xsl:choose>
498
+ <xsl:when test="string-length($tmp_full_tag)=0">
499
+ <xsl:value-of select="substring-after(substring-before($text, ']'), '[')" />
500
+ </xsl:when>
501
+ <xsl:otherwise>
502
+ <xsl:value-of select="$tmp_full_tag" />
503
+ </xsl:otherwise>
504
+ </xsl:choose>
505
+
506
+
507
+ -->
508
+
509
+ <!-- determine whether add dot between the object and method; e.g. object.method or object[]-->
510
+
511
+ <xsl:choose>
512
+ <xsl:when test="contains(@name, '[')">
513
+ <xsl:text>object</xsl:text>
514
+ </xsl:when>
515
+ <xsl:otherwise>
516
+ <xsl:text>object.</xsl:text><xsl:value-of select="@name" />
517
+ </xsl:otherwise>
518
+ </xsl:choose>
494
519
 
495
520
  <xsl:choose>
496
521
 
@@ -506,7 +531,17 @@
506
531
 
507
532
  <!-- do not show parenthesis if first argument is type of block -->
508
533
  <xsl:if test="arguments/argument[1]/@type!='block'">
509
- <xsl:text>( </xsl:text>
534
+
535
+ <xsl:choose>
536
+ <xsl:when test="contains(@name, '[')">
537
+ <xsl:text>[ </xsl:text>
538
+ </xsl:when>
539
+ <xsl:otherwise>
540
+ <xsl:text>( </xsl:text>
541
+ </xsl:otherwise>
542
+ </xsl:choose>
543
+
544
+ <!--<xsl:text>( </xsl:text>-->
510
545
 
511
546
  <!-- collect arguments for example -->
512
547
  <xsl:for-each select="arguments/argument">
@@ -551,7 +586,18 @@
551
586
  </xsl:if>
552
587
 
553
588
  </xsl:for-each>
554
- <xsl:text> ) </xsl:text>
589
+ <!--<xsl:text> ) </xsl:text>-->
590
+
591
+ <xsl:choose>
592
+ <xsl:when test="contains(@name, ']')">
593
+ <xsl:text> ] </xsl:text>
594
+ </xsl:when>
595
+ <xsl:otherwise>
596
+ <xsl:text> ) </xsl:text>
597
+ </xsl:otherwise>
598
+ </xsl:choose>
599
+
600
+
555
601
  </xsl:if>
556
602
 
557
603
  <!-- collect arguments for example -->
@@ -1636,42 +1682,78 @@
1636
1682
 
1637
1683
  </xsl:template>
1638
1684
 
1685
+ <!-- template#process_tags -->
1639
1686
  <xsl:template name="process_tags">
1640
1687
 
1641
1688
  <xsl:param name="text"/>
1642
1689
 
1643
1690
  <xsl:variable name="remainingContent" select="$text"/>
1644
1691
 
1645
- <!-- content before start tag -->
1692
+ <!-- content before tag start character -->
1646
1693
  <xsl:variable name="content_before_tag" select="substring-before($text, '[')"/>
1647
1694
 
1648
1695
  <!-- content after start tag -->
1649
- <xsl:variable name="content_after_tag" select="substring-after(substring-after($text, '['), ']')"/>
1650
-
1651
- <!-- start tag -->
1652
- <xsl:variable name="full_tag" select="substring-after(substring-before($text, ']'), '[')"/>
1696
+ <!-- content after start tag: content[/example_tag]continues-->
1697
+ <!--<xsl:variable name="content_after_tag" select="substring-after(substring-after($text, '['), ']')"/>
1698
+ -->
1653
1699
 
1654
- <xsl:variable name="tag" select="str:split(substring-after(substring-before($text, ']'), '['), '=')[1]"/>
1700
+ <!-- start tag: [example_tag="abcdef"] -->
1701
+ <xsl:variable name="content_after_tag">
1702
+ <xsl:variable name="tmp_content_after_tag" select="substring-after(substring-after($text, '['), '&quot;]')"/>
1703
+ <xsl:choose>
1704
+ <xsl:when test="string-length($tmp_content_after_tag)=0">
1705
+ <xsl:value-of select="substring-after(substring-after($text, '['), ']')" />
1706
+ </xsl:when>
1707
+ <xsl:otherwise>
1708
+ <xsl:value-of select="$tmp_content_after_tag" />
1709
+ </xsl:otherwise>
1710
+ </xsl:choose>
1711
+ </xsl:variable>
1655
1712
 
1656
- <!-- content between tag -->
1657
- <xsl:variable name="tag_content" select="substring-before($content_after_tag, concat('[/', $tag, ']'))"/>
1658
1713
 
1659
- <xsl:variable name="content_after_start_tag" select="substring-after($text, concat('[',$tag,']'))"/>
1714
+ <!-- start tag: [example_tag="abcdef"] -->
1715
+ <!-- <xsl:variable name="tmp_full_tag" select="substring-after(substring-before($text, '&quot;]'), '[')"/>
1716
+ -->
1660
1717
 
1661
- <xsl:variable name="content_after_end_tag" select="substring-after($content_after_tag, concat('[/', $tag, ']'))"/>
1718
+ <!-- check if full tag contains string value -->
1662
1719
 
1663
1720
  <!--
1664
- <br /><b>tag: </b><xsl:value-of select="$tag" />
1665
1721
 
1666
- <br /><b>tag_2: </b><xsl:value-of select="str:split($tag, '=')[1]" />
1722
+
1723
+ <xsl:if test="string-length($tag_content)=0">
1667
1724
 
1668
- <br /><b>before: </b><xsl:value-of select="$content_before_tag" />
1669
- <br /><b>after: </b><xsl:value-of select="$content_after_tag" />
1670
- <br /><b>content: </b><xsl:value-of select="$tag_content" />
1671
- <br /><b>content_after_end_tag: </b><xsl:value-of select="$content_after_end_tag" />
1725
+ <xsl:call-template name="process_tags">
1726
+ <xsl:with-param name="text" select="$content_after_start_tag" />
1727
+ </xsl:call-template>
1728
+
1729
+ </xsl:if>
1672
1730
 
1673
- <br /><br />
1674
- -->
1731
+ -->
1732
+
1733
+ <xsl:variable name="full_tag">
1734
+ <!-- start tag: [example_tag="abcdef"] -->
1735
+ <xsl:variable name="tmp_full_tag" select="substring-after(substring-before($text, '&quot;]'), '[')"/>
1736
+ <xsl:choose>
1737
+ <xsl:when test="string-length($tmp_full_tag)=0">
1738
+ <xsl:value-of select="substring-after(substring-before($text, ']'), '[')" />
1739
+ </xsl:when>
1740
+ <xsl:otherwise>
1741
+ <xsl:value-of select="$tmp_full_tag" />
1742
+ </xsl:otherwise>
1743
+ </xsl:choose>
1744
+ </xsl:variable>
1745
+
1746
+ <!-- tag: example_tag -->
1747
+ <xsl:variable name="tag" select="str:split(substring-after(substring-before($text, ']'), '['), '=')[1]"/>
1748
+
1749
+ <!-- content between tags: content-->
1750
+ <xsl:variable name="tag_content" select="substring-before($content_after_tag, concat('[/', $tag, ']'))"/>
1751
+
1752
+ <!-- content after start tag: content[/example_tag]continues -->
1753
+ <xsl:variable name="content_after_start_tag" select="substring-after($text, concat('[',$tag,']'))"/>
1754
+
1755
+ <!-- content after end tag: continues-->
1756
+ <xsl:variable name="content_after_end_tag" select="substring-after($content_after_tag, concat('[/', $tag, ']'))"/>
1675
1757
 
1676
1758
  <!-- show leading text before tag... -->
1677
1759
  <xsl:value-of select="$content_before_tag" />
@@ -236,7 +236,7 @@ module MobyBehaviour
236
236
 
237
237
  result_hash = {
238
238
 
239
- :object => { :type => self.type, :sut => self.kind_of?( MobyBase::SUT ) ? self.id : self.sut.id },
239
+ :object => { :type => @type, :sut => kind_of?( MobyBase::SUT ) ? id : sut.id },
240
240
  :methods => object_methods,
241
241
  :behaviours => behaviours
242
242
  }
@@ -17,9 +17,13 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
+ [
20
21
 
22
+ # command_data abstract class
23
+ 'command_data.rb'
21
24
 
25
+ ].each{ | filename |
22
26
 
23
- # command_data abstract class
24
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data' ) )
27
+ require File.expand_path( File.join( File.dirname( __FILE__ ), filename ) )
25
28
 
29
+ }
@@ -17,24 +17,31 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
- # behaviour abstraction class, factory and all other related modules etc
21
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/loader' ) )
20
+ [
22
21
 
23
- # command_data abstraction class etc.
24
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data/loader' ) )
22
+ # behaviour abstraction class, factory and all other related modules etc
23
+ 'behaviour/loader.rb',
25
24
 
26
- # command_data controller abstraction class etc.
27
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'controller/loader' ) )
25
+ # command_data abstraction class etc.
26
+ 'command_data/loader.rb',
28
27
 
29
- # sut abstract class, generic sut etc
30
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'sut/loader' ) )
28
+ # command_data controller abstraction class etc.
29
+ 'controller/loader.rb',
31
30
 
32
- # error classes
33
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'errors' ) )
31
+ # sut abstract class, generic sut etc
32
+ 'sut/loader.rb',
34
33
 
35
- # test object abstraction, factory, identificator behaviours and all other related modules
36
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'test_object/loader' ) )
34
+ # error classes
35
+ 'errors.rb',
37
36
 
38
- # state object
39
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'state_object' ) )
37
+ # test object abstraction, factory, identificator behaviours and all other related modules
38
+ 'test_object/loader.rb',
40
39
 
40
+ # state object
41
+ 'state_object.rb'
42
+
43
+ ].each{ | filename |
44
+
45
+ require File.expand_path( File.join( File.dirname( __FILE__ ), filename ) )
46
+
47
+ }
@@ -307,7 +307,7 @@ module MobyBase
307
307
  # TODO: document me
308
308
  def inspect
309
309
 
310
- "#<#{ self.class }:0x#{ ( "%x" % ( self.object_id.to_i << 1 ) )[ 3 .. -1 ] } @id=#{ @id.inspect } @type=\"#{ @type }\" @name=\"#{ @name }\">"
310
+ "#<#{ self.class }:0x#{ ( "%x" % ( object_id.to_i << 1 ) )[ 3 .. -1 ] } @id=#{ @id.inspect } @type=\"#{ @type }\" @name=\"#{ @name }\">"
311
311
 
312
312
  end
313
313
 
@@ -84,20 +84,25 @@ module MobyBase
84
84
 
85
85
  command_data.check_type MobyCommand::CommandData, 'Wrong argument type $1 for command_data (expected $2)'
86
86
 
87
+ _command_class_suffix = command_data.class.name.gsub(/^MobyCommand::/, '')
88
+
89
+ _execution_order_count = @execution_order.count
90
+
87
91
  # retrieve controller for command; iterate through each sut controller
88
92
  @execution_order.each_with_index do | controller, index |
89
93
 
90
94
  begin
91
95
 
92
96
  # extend command_data with combinination of corresponding sut specific controller
93
- command_data.extend eval("#{ @sut_controllers[ controller ] }::#{ command_data.class.name.gsub(/^MobyCommand::/, '') }")
97
+ command_data.extend eval( "#{ @sut_controllers[ controller ] }::#{ _command_class_suffix }" )
94
98
 
99
+ # controller found
95
100
  break
96
101
 
97
102
  rescue NameError
98
103
 
99
104
  # raise exception only if none controller found
100
- if ( index + 1 ) == @execution_order.count
105
+ if ( index + 1 ) == _execution_order_count
101
106
 
102
107
  raise MobyBase::ControllerNotFoundError, "No controller found for command data object #{ command_data.inspect }"
103
108
 
@@ -117,6 +122,7 @@ module MobyBase
117
122
  # execute the command
118
123
  command_data.execute
119
124
 
125
+ # retry in case of IO/connection error
120
126
  rescue Errno::EPIPE, IOError
121
127
 
122
128
  raise if retries == 1
@@ -185,7 +185,7 @@ module MobyBehaviour
185
185
  def freeze
186
186
 
187
187
  =begin
188
- if sut_parameters[ :use_find_object, 'false' ] == 'true' && self.respond_to?( 'find_object' )
188
+ if use_find_objects
189
189
 
190
190
  warn("warning: SUT##{ __method__ } is not supported when use_find_objects optimization is enabled")
191
191
 
@@ -213,7 +213,7 @@ module MobyBehaviour
213
213
  def unfreeze
214
214
 
215
215
  =begin
216
- if sut_parameters[ :use_find_object, 'false' ] == 'true' && self.respond_to?( 'find_object' )
216
+ if use_find_objects
217
217
 
218
218
  warn("warning: SUT##{ __method__ } is not supported when use_find_objects optimization is enabled")
219
219
 
@@ -260,13 +260,17 @@ module MobyBehaviour
260
260
 
261
261
  if xml.kind_of?( MobyUtil::XML::Element )
262
262
 
263
+ @test_object_adapter = @test_object_adapter.identify_test_object_adapter_from_data( xml )
264
+
263
265
  @xml_data = xml
264
266
  @frozen = true
265
267
  @forced_xml = true
266
268
 
267
269
  elsif xml.kind_of?( String )
268
270
 
269
- @xml_data = MobyUtil::XML.parse_string( xml ).root
271
+ @test_object_adapter = @test_object_adapter.identify_test_object_adapter_from_data( xml )
272
+
273
+ @xml_data = MobyUtil::XML.parse_string( xml )
270
274
  @frozen = true
271
275
  @forced_xml = true
272
276
 
@@ -387,42 +391,55 @@ module MobyBehaviour
387
391
  # description: If the implementation is missing for the method
388
392
  def setup
389
393
 
390
- if self.parameter[ :sut_setup, nil ] || self.parameter[ :setup, nil ]
394
+ if sut_parameters[ :sut_setup, nil ] || sut_parameters[ :setup, nil ]
391
395
 
392
- if self.parameter[ :sut_setup, nil ]
393
- require MobyUtil::FileHelper.expand_path(self.parameter[ :sut_setup ])
396
+ if sut_parameters[ :sut_setup, nil ]
397
+
398
+ require MobyUtil::FileHelper.expand_path( sut_parameters[ :sut_setup ] )
394
399
 
395
400
  $logger.behaviour "PASS;sut.setup method found"
396
401
 
397
- self.setup
402
+ setup
398
403
 
399
404
  $logger.behaviour "PASS;sut.setup executed"
405
+
400
406
  end
401
407
 
402
- if self.parameter[ :setup, nil ]
408
+ if sut_parameters[ :setup, nil ]
409
+
403
410
  $logger.behaviour "PASS;sut.setup parameters found"
404
- methods=self.parameter[ :setup ]
405
- methods.each do |method|
406
- m=method[0].to_s
407
- args=method[1]
411
+
412
+ methods = sut_parameters[ :setup ]
413
+
414
+ methods.each do | method |
415
+
416
+ m = method[0].to_s
417
+
418
+ args = method[1]
419
+
408
420
  if args.to_s == ""
421
+
409
422
  eval("self.#{m}")
423
+
410
424
  else
425
+
411
426
  eval("self.#{m}(:#{args.to_sym})")
427
+
412
428
  end
429
+
413
430
  end
431
+
414
432
  $logger.behaviour "PASS;sut.setup parameter methods executed"
433
+
415
434
  end
416
435
 
417
436
  else
418
- $logger.behaviour "FAIL;No methods or parameters found for sut.setup"
419
437
 
438
+ $logger.behaviour "FAIL;No methods or parameters found for sut.setup"
420
439
  raise MobyBase::BehaviourError.new("Setup", "Failed to load sut.setup method check the :sut_setup parameter")
421
440
 
422
441
  end
423
442
 
424
-
425
-
426
443
  end
427
444
 
428
445
  # == description
@@ -437,34 +454,50 @@ module MobyBehaviour
437
454
  # description: If the implementation is missing for the method
438
455
  def teardown
439
456
 
440
- if self.parameter[ :sut_teardown, nil ] || self.parameter[ :teardown, nil ]
457
+ if sut_parameters[ :sut_teardown, nil ] || sut_parameters[ :teardown, nil ]
441
458
 
442
- if self.parameter[ :sut_teardown, nil ]
443
- require MobyUtil::FileHelper.expand_path(self.parameter[ :sut_teardown ])
459
+ if sut_parameters[ :sut_teardown, nil ]
460
+
461
+ require MobyUtil::FileHelper.expand_path(sut_parameters[ :sut_teardown ])
444
462
 
445
463
  $logger.behaviour "PASS;sut.teardown method found"
446
464
 
447
- self.teardown
465
+ teardown
448
466
 
449
467
  $logger.behaviour "PASS;sut.teardown executed"
468
+
450
469
  end
451
470
 
452
- if self.parameter[ :teardown, nil ]
471
+ if sut_parameters[ :teardown, nil ]
472
+
453
473
  $logger.behaviour "PASS;sut.teardown parameters found"
454
- methods=self.parameter[ :teardown ]
455
- methods.each do |method|
456
- m=method[0].to_s
457
- args=method[1]
474
+
475
+ methods = sut_parameters[ :teardown ]
476
+
477
+ methods.each do | method |
478
+
479
+ m = method[0].to_s
480
+
481
+ args = method[1]
482
+
458
483
  if args.to_s == ""
484
+
459
485
  eval("self.#{m}")
486
+
460
487
  else
488
+
461
489
  eval("self.#{m}(:#{args.to_sym})")
490
+
462
491
  end
492
+
463
493
  end
494
+
464
495
  $logger.behaviour "PASS;sut.teardown parameter methods executed"
496
+
465
497
  end
466
498
 
467
499
  else
500
+
468
501
  $logger.behaviour "FAIL;No method or parameters found for sut.teardown"
469
502
 
470
503
  raise MobyBase::BehaviourError.new("Teardown", "Failed to load sut.teardown method check the :sut_teardown parameter")
@@ -511,7 +544,7 @@ module MobyBehaviour
511
544
  if source_data.nil?
512
545
 
513
546
  # refresh if xml data is empty
514
- self.refresh if @xml_data.empty?
547
+ refresh if @xml_data.empty?
515
548
 
516
549
  raise RuntimeError, "Can not create state object of SUT with id #{ @id.inspect }, no XML content or SUT not initialized properly." if @xml_data.empty?
517
550
 
@@ -540,10 +573,13 @@ module MobyBehaviour
540
573
  # Returns the current foreground application or one which matches with given attributes rules.
541
574
  #
542
575
  # == arguments
543
- # attributes
576
+ # target
544
577
  # Hash
545
578
  # description: Hash defining required expected attributes of the application
546
- # example: { :name => 'testapp' }
579
+ # example: { :name => "testapp" }
580
+ # String
581
+ # description: Name of application
582
+ # example: "testapp"
547
583
  #
548
584
  # == returns
549
585
  # MobyBase::TestObject
@@ -554,20 +590,24 @@ module MobyBehaviour
554
590
  # TypeError
555
591
  # description: Wrong argument type <class> for attributes (expected Hash)
556
592
  #
557
- def application( attributes = {} )
593
+ def application( target = {} )
558
594
 
559
595
  begin
560
596
 
561
- attributes.check_type( Hash, 'Wrong argument type $1 for attributes (expected $2)' )
597
+ # raise exception if argument type other than hash
598
+ target.check_type( [ String, Hash ], "Wrong argument type $1 for application identification rules (expected $2)" )
562
599
 
563
- attributes[ :type ] = 'application'
600
+ # if target application is given as string, interpret it as application name
601
+ target = { :name => target.to_s } if target.kind_of?( String )
602
+
603
+ target[ :type ] = 'application'
564
604
 
565
- attributes[ :__parent_application ] = nil
605
+ target[ :__parent_application ] = nil
566
606
 
567
- @current_application_id = nil if attributes[ :id ].nil?
607
+ @current_application_id = nil if target[ :id ].nil?
568
608
 
569
609
  # create test object and return it as result
570
- test_object = child( attributes )
610
+ test_object = child( target )
571
611
 
572
612
  # store parent application to test object
573
613
  test_object.instance_variable_set( :@parent_application, test_object )
@@ -577,7 +617,7 @@ module MobyBehaviour
577
617
  rescue
578
618
 
579
619
  $logger.behaviour(
580
- "FAIL;Failed to find application.;#{ id.to_s };sut;{};application;#{ attributes.kind_of?( Hash ) ? attributes.inspect : attributes.class.to_s }"
620
+ "FAIL;Failed to find application.;#{ id.to_s };sut;{};application;#{ target.kind_of?( Hash ) ? target.inspect : target.class.to_s }"
581
621
  )
582
622
 
583
623
  # raise same exception
@@ -585,7 +625,7 @@ module MobyBehaviour
585
625
 
586
626
  ensure
587
627
 
588
- $logger.behaviour "PASS;Application found.;#{ id.to_s };sut;{};application;#{ attributes.inspect }" if $!.nil?
628
+ $logger.behaviour "PASS;Application found.;#{ id.to_s };sut;{};application;#{ target.inspect }" if $!.nil?
589
629
 
590
630
  end
591
631
 
@@ -760,7 +800,7 @@ module MobyBehaviour
760
800
 
761
801
  app_list = MobyBase::StateObject.new(
762
802
 
763
- :source_data => self.list_apps,
803
+ :source_data => list_apps,
764
804
  :parent => nil,
765
805
  :test_object_adapter => @test_object_adapter
766
806
 
@@ -773,7 +813,7 @@ module MobyBehaviour
773
813
  app_info = find_app(app_list, {:id => target[ :uid ]}) if target[ :uid ] != nil
774
814
  app_info = find_app(app_list, {:name => target[ :name ]}) unless app_info
775
815
 
776
- app = self.application(:id => app_info.id) if app_info
816
+ app = application(:id => app_info.id) if app_info
777
817
 
778
818
  if target[:restart_if_running] && app
779
819
 
@@ -800,7 +840,7 @@ module MobyBehaviour
800
840
 
801
841
  if ( target[ :start_command ] != nil )
802
842
 
803
- raise MobyBase::BehaviourError.new("Run", "Failed to load execute_shell_method") unless self.respond_to?("execute_shell_command")
843
+ raise MobyBase::BehaviourError.new("Run", "Failed to load execute_shell_method") unless respond_to?("execute_shell_command")
804
844
 
805
845
  execute_shell_command( target[ :start_command ], :detached => "true" )
806
846
 
@@ -884,7 +924,7 @@ module MobyBehaviour
884
924
  # verify that application is launched and application test object is found from xml
885
925
  expected_attributes.delete( :name )
886
926
 
887
- self.wait_child(
927
+ wait_child(
888
928
 
889
929
  # attributes to identify application object
890
930
  expected_attributes,
@@ -1178,10 +1218,10 @@ module MobyBehaviour
1178
1218
  if ( sut_parameters[ :read_lang_from_app ]=='true')
1179
1219
 
1180
1220
  #read localeName app
1181
- language=self.application.attribute("localeName")
1221
+ language = application.attribute("localeName")
1182
1222
 
1183
1223
  #determine the language from the locale
1184
- language=language.split('_')[0].to_s if (language!=nil && !language.empty?)
1224
+ language = language.split('_')[0].to_s if (language!=nil && !language.empty?)
1185
1225
 
1186
1226
  else
1187
1227
 
@@ -1491,6 +1531,26 @@ module MobyBehaviour
1491
1531
 
1492
1532
  end
1493
1533
 
1534
+ # == nodoc
1535
+ # == description
1536
+ # == returns
1537
+ def use_find_objects=( value )
1538
+
1539
+ value.check_type [ TrueClass, FalseClass ], 'wrong argument type $1 for use_find_objects (expected $2)'
1540
+
1541
+ sut_parameters[ :use_find_object ] = value
1542
+
1543
+ end
1544
+
1545
+ # == nodoc
1546
+ # == description
1547
+ # == returns
1548
+ def use_find_objects
1549
+
1550
+ sut_parameters[ :use_find_object, false ].true? && respond_to?( 'find_object' ).true?
1551
+
1552
+ end
1553
+
1494
1554
  private
1495
1555
 
1496
1556
  # TODO: document me
@@ -1511,9 +1571,6 @@ module MobyBehaviour
1511
1571
 
1512
1572
  unless @frozen
1513
1573
 
1514
- # determine should FindObjects service be used
1515
- use_find_objects = sut_parameters[ :use_find_object, 'false' ] == 'true' and self.respond_to?( 'find_object' ) == true
1516
-
1517
1574
  # duplicate refresh arguments hash
1518
1575
  refresh_arguments = refresh_args.clone
1519
1576
 
@@ -1526,7 +1583,7 @@ module MobyBehaviour
1526
1583
  # store as local variable for less AST lookups
1527
1584
  xml_data_checksum = @xml_data_checksum
1528
1585
 
1529
- #use find_object if set on and the method exists
1586
+ # use find_object if set on and the method exists
1530
1587
  if use_find_objects
1531
1588
 
1532
1589
  # retrieve new ui dump xml and checksum
@@ -1563,7 +1620,7 @@ module MobyBehaviour
1563
1620
  xml_data, from_cache = MobyUtil::XML.parse_string( new_xml_data, new_checksum )
1564
1621
 
1565
1622
  # store new xml data object
1566
- @xml_data = xml_data.root
1623
+ @xml_data = xml_data
1567
1624
 
1568
1625
  # store xml checksum to be compared while next ui dump request; do not reparse xml if checksum values are equal
1569
1626
  @xml_data_checksum = new_checksum