testability-driver 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. data/bin/tdriver-devtools +0 -0
  2. data/ext/native_extensions.c +165 -6
  3. data/lib/tdriver-devtools/behaviour/old/xml/update +0 -0
  4. data/lib/tdriver-devtools/behaviour/xml/generate.rb +0 -0
  5. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +15 -1
  6. data/lib/tdriver-devtools/doc/update +0 -0
  7. data/lib/tdriver-devtools/doc/xslt/template.xsl +24 -14
  8. data/lib/tdriver-devtools/doc/xslt/update +0 -0
  9. data/lib/tdriver-devtools/tdriver-devtools.rb +0 -0
  10. data/lib/tdriver-devtools/tests/feature_tests/update +0 -0
  11. data/lib/tdriver/base/behaviour/{behaviour.rb → abstract.rb} +3 -6
  12. data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
  13. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +2 -2
  14. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +47 -37
  15. data/lib/tdriver/base/behaviour/factory.rb +260 -382
  16. data/lib/tdriver/base/behaviour/loader.rb +22 -4
  17. data/lib/tdriver/base/controller/abstraction.rb +56 -0
  18. data/lib/tdriver/base/controller/loader.rb +21 -0
  19. data/lib/tdriver/base/loader.rb +3 -1
  20. data/lib/tdriver/base/sut/controller.rb +91 -74
  21. data/lib/tdriver/base/sut/factory.rb +8 -8
  22. data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
  23. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +116 -96
  24. data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
  25. data/lib/tdriver/base/sut/sut.rb +10 -8
  26. data/lib/tdriver/base/test_object/abstract.rb +25 -24
  27. data/lib/tdriver/base/test_object/adapter.rb +67 -44
  28. data/lib/tdriver/base/test_object/behaviours/test_object.rb +79 -20
  29. data/lib/tdriver/base/test_object/factory.rb +45 -15
  30. data/lib/tdriver/base/test_object/xml/adapter.rb +80 -57
  31. data/lib/tdriver/env.rb +0 -0
  32. data/lib/tdriver/loader.rb +0 -0
  33. data/lib/tdriver/matti.rb +0 -0
  34. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +1 -0
  35. data/lib/tdriver/report/report.rb +2 -1
  36. data/lib/tdriver/report/report_crash_file_capture.rb +12 -0
  37. data/lib/tdriver/report/report_creator.rb +6 -2
  38. data/lib/tdriver/report/report_execution_statistics.rb +27 -11
  39. data/lib/tdriver/report/report_graph_generator.rb +59 -0
  40. data/lib/tdriver/report/report_test_case_run.rb +34 -2
  41. data/lib/tdriver/report/report_writer.rb +12 -0
  42. data/lib/tdriver/tdriver.rb +12 -1
  43. data/lib/tdriver/util/agent/loader.rb +22 -0
  44. data/lib/tdriver/util/agent/service.rb +107 -0
  45. data/lib/tdriver/util/common/crc16.rb +17 -10
  46. data/lib/tdriver/util/common/hash.rb +4 -1
  47. data/lib/tdriver/util/common/kernel.rb +11 -0
  48. data/lib/tdriver/util/common/numeric.rb +48 -0
  49. data/lib/tdriver/util/common/object.rb +5 -2
  50. data/lib/tdriver/util/common/string.rb +8 -1
  51. data/lib/tdriver/util/filters/attribute_filter.rb +121 -0
  52. data/lib/tdriver/util/filters/loader.rb +29 -0
  53. data/lib/tdriver/util/fixture/loader.rb +22 -0
  54. data/lib/tdriver/util/fixture/service.rb +157 -0
  55. data/lib/tdriver/util/loader.rb +8 -2
  56. data/lib/tdriver/util/logger/logger.rb +12 -6
  57. data/lib/tdriver/util/other/config.rb +0 -0
  58. data/lib/tdriver/util/parameter/parameter.rb +221 -152
  59. data/lib/tdriver/util/plugin/error.rb +0 -0
  60. data/lib/tdriver/util/video/camera_linux.rb +36 -22
  61. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +3 -13
  62. data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +13 -8
  63. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +51 -9
  64. data/lib/tdriver/util/xml/xml.rb +4 -2
  65. data/lib/tdriver/verify/verify.rb +280 -621
  66. data/lib/tdriver/version.rb +1 -1
  67. data/xml/behaviours/generic.xml +34 -0
  68. data/xml/templates/generic.xml +20 -3
  69. metadata +168 -240
  70. data/lib/tdriver-devtools/tests/feature_tests/output/application_closable_0x3f.feature +0 -10
  71. data/lib/tdriver-devtools/tests/feature_tests/output/application_close.feature +0 -15
  72. data/lib/tdriver-devtools/tests/feature_tests/output/application_environment.feature +0 -10
  73. data/lib/tdriver-devtools/tests/feature_tests/output/application_executable_name.feature +0 -10
  74. data/lib/tdriver-devtools/tests/feature_tests/output/application_uid.feature +0 -10
  75. data/lib/tdriver-devtools/tests/feature_tests/output/created.rid +0 -1
  76. data/lib/tdriver-devtools/tests/feature_tests/output/find_find.feature +0 -15
  77. data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash.feature +0 -10
  78. data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash_images.feature +0 -15
  79. data/lib/tdriver-devtools/tests/feature_tests/output/sut_application.feature +0 -15
  80. data/lib/tdriver-devtools/tests/feature_tests/output/sut_capture_screen.feature +0 -10
  81. data/lib/tdriver-devtools/tests/feature_tests/output/sut_child.feature +0 -10
  82. data/lib/tdriver-devtools/tests/feature_tests/output/sut_clear_verify_blocks.feature +0 -10
  83. data/lib/tdriver-devtools/tests/feature_tests/output/sut_connect.feature +0 -10
  84. data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order.feature +0 -10
  85. data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order_0x3d.feature +0 -10
  86. data/lib/tdriver-devtools/tests/feature_tests/output/sut_current_application_id.feature +0 -15
  87. data/lib/tdriver-devtools/tests/feature_tests/output/sut_disconnect.feature +0 -10
  88. data/lib/tdriver-devtools/tests/feature_tests/output/sut_dump_count.feature +0 -15
  89. data/lib/tdriver-devtools/tests/feature_tests/output/sut_freeze.feature +0 -10
  90. data/lib/tdriver-devtools/tests/feature_tests/output/sut_frozen.feature +0 -10
  91. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_application_id.feature +0 -10
  92. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_object.feature +0 -10
  93. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_operator_data.feature +0 -10
  94. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_ui_dump.feature +0 -15
  95. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_user_information.feature +0 -10
  96. data/lib/tdriver-devtools/tests/feature_tests/output/sut_input.feature +0 -15
  97. data/lib/tdriver-devtools/tests/feature_tests/output/sut_parameter.feature +0 -15
  98. data/lib/tdriver-devtools/tests/feature_tests/output/sut_press_key.feature +0 -10
  99. data/lib/tdriver-devtools/tests/feature_tests/output/sut_received_data.feature +0 -10
  100. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh.feature +0 -20
  101. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_timeout.feature +0 -15
  102. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_tries.feature +0 -15
  103. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_ui_dump.feature +0 -20
  104. data/lib/tdriver-devtools/tests/feature_tests/output/sut_run.feature +0 -10
  105. data/lib/tdriver-devtools/tests/feature_tests/output/sut_sent_data.feature +0 -10
  106. data/lib/tdriver-devtools/tests/feature_tests/output/sut_state.feature +0 -10
  107. data/lib/tdriver-devtools/tests/feature_tests/output/sut_translate.feature +0 -30
  108. data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_type.feature +0 -10
  109. data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_version.feature +0 -10
  110. data/lib/tdriver-devtools/tests/feature_tests/output/sut_unfreeze.feature +0 -10
  111. data/lib/tdriver-devtools/tests/feature_tests/output/sut_update.feature +0 -10
  112. data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_always.feature +0 -20
  113. data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_blocks.feature +0 -10
  114. data/lib/tdriver-devtools/tests/feature_tests/output/sut_x_path.feature +0 -10
  115. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data.feature +0 -10
  116. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_0x3d.feature +0 -10
  117. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_crc.feature +0 -10
  118. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_down.feature +0 -10
  119. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_status.feature +0 -10
  120. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_up.feature +0 -10
  121. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_reset.feature +0 -10
  122. data/lib/tdriver-devtools/tests/feature_tests/output/verification_test_object_exists_0x3f.feature +0 -15
  123. data/lib/tdriver/base/behaviour/factory_new.rb +0 -409
  124. data/lib/tdriver/base/test_object/identificator.rb +0 -518
  125. data/lib/tdriver/util/filters/dynamic_attributes.rb +0 -189
@@ -0,0 +1,43 @@
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 MobyCommand
21
+
22
+ class AgentCommand < MobyCommand::CommandData
23
+
24
+ attr_accessor :parameters
25
+
26
+ # == description
27
+ # Agent command holds the required parameters to execute a agent information queries in the target.
28
+ # == arguments
29
+ # params
30
+ # Hash
31
+ # description: Hash for holding the parameters need by the agent information query operation.
32
+ # example: {}
33
+ def initialize( parameters = {} )
34
+
35
+ parameters.check_type Hash, 'wrong argument type $1 for agent service command object (expected $2)'
36
+
37
+ @parameters = parameters
38
+
39
+ end
40
+
41
+ end # AgentCommand
42
+
43
+ end # MobyCommand
@@ -23,17 +23,17 @@ module MobyBase
23
23
  class SUT
24
24
 
25
25
  attr_accessor(
26
- :id, # id of current SUT
27
- :ui_type, # ui type
28
- :ui_version, # ui version
29
- :input, # the input method used for interacting with this sut as a symbol, eg. :key or :touch.
30
- :type # type of object ("SUT"), used when applying behaviour
26
+ :id, # id of current SUT
27
+ :ui_type, # ui type
28
+ :ui_version, # ui version
29
+ :input # the input method used for interacting with this sut as a symbol, eg. :key or :touch.
31
30
  )
32
31
 
33
- #added for now
34
32
  attr_reader(
35
- :test_object_adapter
36
- )
33
+ :type, # type of object ("SUT"), used when applying behaviour
34
+ :environment, # sut environment from parameters file
35
+ :test_object_adapter # test object adapter -- added for now?
36
+ )
37
37
 
38
38
  # Initialize SUT by giving references to the used controller and test object factory
39
39
  # == params
@@ -68,6 +68,8 @@ module MobyBase
68
68
 
69
69
  @object_behaviours = []
70
70
 
71
+ @environment = $parameters[ sut_id ][ :env ]
72
+
71
73
  @forced_xml = false
72
74
 
73
75
  end
@@ -41,26 +41,28 @@ module MobyBase
41
41
  # verify that given argument is type of hash
42
42
  options.check_type Hash, 'wrong argument type $1 for TestObject#new (expected $2)'
43
43
 
44
- # verify that required keys is found from options hash and initialize the test object with these values.
45
- @test_object_factory = options.require_key( :test_object_factory )
46
- @test_object_adapter = options.require_key( :test_object_adapter )
47
- @creation_attributes = options.require_key( :creation_attributes )
44
+ # verify that required keys is found from options hash and initialize the test object with these values
45
+ @sut = options.require_key :sut
48
46
 
49
- @sut = options.require_key( :sut )
47
+ @test_object_factory = options.require_key :test_object_factory
48
+ @test_object_adapter = options.require_key :test_object_adapter
49
+ @creation_attributes = options.require_key :creation_attributes
50
50
 
51
- @sut_id = @sut.instance_variable_get( :@id )
51
+ # verify that parent object and parent application is given in options hash
52
+ @parent = options.require_key :parent
53
+ @parent_application = options.require_key :parent_application
52
54
 
53
- @parent = options.require_key( :parent )
54
- @parent_application = options.require_key( :parent_application )
55
-
56
- # apply xml object if given; test object type, id and name are retrieved from the xml
57
- self.xml_data = options[ :xml_object ] if options.has_key?( :xml_object )
55
+ # store sut id
56
+ @sut_id = @sut.instance_variable_get :@id
58
57
 
59
58
  # initialize cache object
60
- @child_object_cache = TDriver::TestObjectCache.new
59
+ @child_object_cache = TDriver::TestObjectCache.new
61
60
 
62
61
  # empty test object behaviours list
63
- @object_behaviours = []
62
+ @object_behaviours = []
63
+
64
+ # apply xml object if given; test object type, id and name are retrieved from the xml
65
+ __send__ :xml_data=, options[ :xml_object ] if options.has_key?( :xml_object )
64
66
 
65
67
  end
66
68
 
@@ -75,7 +77,7 @@ module MobyBase
75
77
  # nothing
76
78
  def eql?( test_object )
77
79
 
78
- self == test_object
80
+ __send__ :==, test_object
79
81
 
80
82
  end
81
83
 
@@ -95,9 +97,9 @@ module MobyBase
95
97
  def ==( test_object )
96
98
 
97
99
  #return false unless test_object.instance_of?( MobyBase::TestObject )
98
- #return false unless self.type == test_object.type
99
- #return false unless self.id == test_object.id
100
- #return false unless self.name == test_object.name
100
+ #return false unless @type == test_object.type
101
+ #return false unless @id == test_object.id
102
+ #return false unless @name == test_object.name
101
103
  #return true
102
104
 
103
105
  # optimized version
@@ -112,11 +114,10 @@ module MobyBase
112
114
  # Fixnum:: hash number representing current TestObject
113
115
  def hash
114
116
 
115
-
116
117
  #result = 17
117
- #result = result * 37 + self.id.to_i
118
- #result = result * 37 + type.hash
119
- #result = result * 37 + name.hash
118
+ #result = result * 37 + @id.to_i
119
+ #result = result * 37 + @hash
120
+ #result = result * 37 + @hash
120
121
  #return result
121
122
 
122
123
  # optimized version
@@ -131,17 +132,17 @@ module MobyBase
131
132
  # should not be used normally. Thus, not documented.
132
133
  def <=>( test_object )
133
134
 
134
- #self_type = self.type
135
+ #self_type = @type
135
136
  #other_type = test_object.type
136
137
  #return -1 if self_type < other_type
137
138
  #return 1 if self_type > other_type
138
139
 
139
- #self_name = self.name
140
+ #self_name = @name
140
141
  #other_name = test_object.name
141
142
  #return -1 if self_name < other_name
142
143
  #return 1 if self_name > other_name
143
144
 
144
- #self_id = self.id
145
+ #self_id = @id
145
146
  #other_id = test_object.id
146
147
  #return -1 if self_id < other_id
147
148
  #return 1 if self_id > other_id
@@ -87,6 +87,40 @@ module TDriver
87
87
 
88
88
  end # xpath_attributes
89
89
 
90
+ #merges elements from the nodeset, used in hybrid app situations
91
+ def create_merged_element(nodeset, environments, close_element=true)
92
+ merged_element_set = false
93
+
94
+ merged_xml = ""
95
+
96
+ nodeset.each{ | object |
97
+
98
+ # only one top element
99
+ unless merged_element_set
100
+
101
+ # retrieve object attributes
102
+ attributes = object.attributes
103
+
104
+ # merge env to attributes hash
105
+ attributes['env'] = environments.join(';')
106
+
107
+ # add application object xml element to new xml string
108
+ merged_xml << "<object #{ hash_to_element_attributes( attributes ) }>"
109
+
110
+ # merged element is now set, no need to do it again
111
+ merged_element_set = true
112
+
113
+ end
114
+
115
+ # append all found elements
116
+ object.xpath('./*').each{ | object | merged_xml << object.to_s }
117
+ }
118
+ merged_xml << "</object>" if close_element and merged_element_set
119
+ merged_xml
120
+ end
121
+
122
+
123
+
90
124
  # TODO: document me
91
125
  def initialize_class
92
126
 
@@ -425,50 +459,53 @@ module TDriver
425
459
 
426
460
  # TODO: document me
427
461
  def self.test_object_attributes( source_data, inclusive_filter = [] )
428
-
462
+
429
463
  # convert all keys to lowercase
430
464
  inclusive_filter.collect!{ | key | key.to_s.downcase } unless inclusive_filter.empty?
431
-
465
+
432
466
  # return hash of test object attributes
433
- Hash[
467
+ object_attributes=Hash.new
434
468
 
435
- # iterate each attribute and collect name and value
436
- source_data.xpath( 'attributes/attribute/value' ).collect{ | value |
469
+ # iterate each attribute and collect name and value
470
+ source_data.xpath( 'attributes/attribute/value' ).collect{ | value |
437
471
 
438
472
  # retrieve attribute name
439
473
  name = value.parent.attribute('name').to_s
440
474
 
441
475
  # collect attribute elements name and content
442
476
  unless inclusive_filter.empty?
443
-
444
- [ name, value.content ] if inclusive_filter.include?( name.downcase )
445
-
477
+
478
+ object_attributes[name]=value.content if inclusive_filter.include?( name.downcase )
479
+
446
480
  else
447
481
 
448
482
  # pass the attribute pair - no filtering done
449
- [ name, value.content ]
450
-
483
+ if object_attributes[name]
484
+ object_attributes[name]="#{object_attributes[name]},#{value.content}"
485
+ else
486
+ object_attributes[name]=value.content
487
+ end
488
+
451
489
  end
452
490
 
453
491
  }
454
492
 
455
- ]
493
+ object_attributes
456
494
 
457
495
  end
458
496
 
459
497
  # TODO: document me
460
498
  def self.application_layout_direction( sut )
461
499
 
462
- # temporary fix until testobject will be associated to parent application object
463
- unless MobyUtil::DynamicAttributeFilter.instance.has_attribute?( 'layoutDirection' )
464
-
465
- # temporary fix: add 'layoutDirection' to dynamic attributes filtering whitelist...
466
- MobyUtil::DynamicAttributeFilter.instance.add_attribute( 'layoutDirection' )
467
-
500
+ # temporary fix until testobject will be associated to parent application object; add 'layoutDirection' to dynamic attributes filtering whitelist...
501
+ TDriver::AttributeFilter.add_attribute( 'layoutDirection' ){
502
+
503
+ # this block will be executed if attribute was not in filter list
504
+
468
505
  # temporary fix: ... and refresh sut to retrieve updated xml data
469
506
  sut.refresh
470
-
471
- end
507
+
508
+ }
472
509
 
473
510
  # TODO: parent application test object should be passed to get_test_objects; TestObjectAdapter#test_object_attribute( @app.xml_data, 'layoutDirection')
474
511
  ( sut.xml_data.at_xpath('*//object[@type="application"]/attributes/attribute[@name="layoutDirection"]/value/text()').content || 'LeftToRight' ).to_s
@@ -642,32 +679,18 @@ module TDriver
642
679
  # collect environment values
643
680
  environments = document_root.xpath('/tasMessage/tasInfo/object[@type="application"]/@env').collect{ | attribute | attribute.to_s }
644
681
 
645
- # iterate through each object found in xml
646
- nodeset.each{ | object |
647
-
648
- # only one application element
649
- unless application_element_set
650
-
651
- #application_objects << object
652
-
653
- # retrieve object attributes
654
- attributes = object.attributes
655
-
656
- # merge env to attributes hash
657
- attributes['env'] = environments.join(';')
658
-
659
- # add application object xml element to new xml string
660
- new_xml << "<object #{ hash_to_element_attributes( attributes ) }>"
661
-
662
- # application element is now set, no need to do it again
663
- application_element_set = true
664
-
665
- end
682
+ #limit to apps
683
+ nodeset = document_root.xpath('/tasMessage/tasInfo/object[@type="application"]')
684
+ close_vkb = false
685
+ if nodeset.count > 0
686
+ new_xml << create_merged_element(nodeset, environments, false)
687
+ close_vkb = true
688
+ end
666
689
 
667
- # append all found elements
668
- object.xpath('./*').each{ | object | new_xml << object.to_s }
669
-
670
- }
690
+ # do the same to the vkbs
691
+ environments = document_root.xpath('/tasMessage/tasInfo/object[@type="vkb_app"]/@env').collect{ | attribute | attribute.to_s }
692
+ nodeset = document_root.xpath('/tasMessage/tasInfo/object[@type="vkb_app"]')
693
+ new_xml << create_merged_element(nodeset, environments, close_vkb)
671
694
 
672
695
  # multiple applications found, return merged application xml
673
696
  new_xml << "</object></tasInfo></tasMessage>"
@@ -76,6 +76,7 @@ module MobyBehaviour
76
76
 
77
77
  end
78
78
 
79
+ =begin
79
80
  # == description
80
81
  # Determines if the current test object is of type 'application'
81
82
  # == returns
@@ -87,6 +88,7 @@ module MobyBehaviour
87
88
  @type == 'application'
88
89
 
89
90
  end
91
+ =end
90
92
 
91
93
  # == description
92
94
  # Return all test object attributes
@@ -250,12 +252,24 @@ module MobyBehaviour
250
252
  # @sut.refresh might have a side effect that changes the @_active instance variable.
251
253
  # === raises
252
254
  # TestObjectNotFoundError:: if TestObject is not identified within synch timeout.
253
- def refresh( refresh_args = nil )
254
-
255
- refresh_args = @creation_attributes if refresh_args.nil?
255
+ def refresh( refresh_args = {} )
256
256
 
257
257
  refresh_args.check_type Hash, "wrong argument type $1 for #{ application? ? 'application' : 'test object' } refresh attributes (expected $2)"
258
258
 
259
+ if refresh_args.blank?
260
+
261
+ if application?
262
+
263
+ refresh_args = { :name => @name, :id => @id }
264
+
265
+ else
266
+
267
+ refresh_args = { :name => @parent_application.name, :id => @parent_application.id }
268
+
269
+ end
270
+
271
+ end
272
+
259
273
  @sut.refresh(
260
274
 
261
275
  refresh_args, @test_object_factory.make_object_search_params( parent, @creation_attributes )
@@ -265,6 +279,8 @@ module MobyBehaviour
265
279
  # update childs if required, returns true or false
266
280
  update( xml_data )
267
281
 
282
+ nil
283
+
268
284
  end
269
285
 
270
286
  # == nodoc
@@ -313,7 +329,15 @@ module MobyBehaviour
313
329
 
314
330
  # return application object or nil if no parent found
315
331
  # Does is make sense to return nil - should n't all test objects belong to an application? Maybe throw exception if application not found
316
- return @sut.child( :type => 'application' ) rescue nil
332
+ begin
333
+
334
+ @sut.child( :type => 'application' )
335
+
336
+ rescue
337
+
338
+ nil
339
+
340
+ end
317
341
 
318
342
  end
319
343
 
@@ -326,11 +350,17 @@ module MobyBehaviour
326
350
  # puts @app.Node( :name => 'Node1' ).get_application_id() #print the application id, this should print @app.id
327
351
  def get_application_id
328
352
 
329
- return @parent_application.id if @parent_application
353
+ if @parent_application
354
+
355
+ @parent_application.id
356
+
357
+ else
358
+
359
+ # workaround
360
+ # What about the case when get_application returns nil? This line will throw an exception in that case.
361
+ get_application.id
330
362
 
331
- # workaround
332
- # What about the case when get_application returns nil? This line will throw an exception in that case.
333
- get_application.id
363
+ end
334
364
 
335
365
  end
336
366
 
@@ -402,8 +432,24 @@ module MobyBehaviour
402
432
  def child( attributes )
403
433
 
404
434
  # verify attributes argument format
405
- attributes.check_type( Hash, "wrong argument type $1 for attributes (expected $2)" )
406
-
435
+ attributes.check_type [ Hash, String, Symbol, Regexp, Array ], "wrong argument type $1 for attributes (expected $2)"
436
+
437
+ # set rules hash to empty Hash if rules hash is not type of Hash
438
+ unless attributes.kind_of?( Hash )
439
+
440
+ # pass empty rules hash if no argument given, otherwise assume value to be object name
441
+ if attributes.blank?
442
+
443
+ attributes = {}
444
+
445
+ else
446
+
447
+ attributes = { :name => attributes }
448
+
449
+ end
450
+
451
+ end
452
+
407
453
  get_child_objects( attributes )
408
454
 
409
455
  end
@@ -504,19 +550,19 @@ module MobyBehaviour
504
550
  if @env != previous_environment
505
551
 
506
552
  # remove cached behaviour module
507
- MobyBase::BehaviourFactory.instance.reset_modules_cache
553
+ TDriver::BehaviourFactory.reset_cache
508
554
 
509
555
  # apply only application behaviours if test object is type of 'application'
510
556
  object_type = ( @type == "application" ? [ @type ] : [ '*', @type ] )
511
557
 
512
558
  # reapply behaviours to test object if environment value has changed
513
- MobyBase::BehaviourFactory.instance.apply_behaviour!(
559
+ TDriver::BehaviourFactory.apply_behaviour(
514
560
 
515
- :object => self,
516
- :object_type => object_type,
517
- :input_type => [ '*', @sut.input.to_s ],
518
- :env => [ '*', *@env.to_s.split(";") ],
519
- :version => [ '*', @sut.ui_version.to_s ]
561
+ :object => self,
562
+ :object_type => object_type,
563
+ :input_type => [ '*', @sut.input.to_s ],
564
+ :env => [ '*', *@env.to_s.split(";") ],
565
+ :version => [ '*', @sut.ui_version.to_s ]
520
566
 
521
567
  )
522
568
 
@@ -577,7 +623,20 @@ module MobyBehaviour
577
623
  rules_hash = method_arguments.first
578
624
 
579
625
  # set rules hash to empty Hash if rules hash is not type of Hash
580
- rules_hash = {} unless rules_hash.kind_of?( Hash )
626
+ unless rules_hash.kind_of?( Hash )
627
+
628
+ # pass empty rules hash if no argument given, otherwise assume value to be object name
629
+ if rules_hash.blank?
630
+
631
+ rules_hash = {}
632
+
633
+ else
634
+
635
+ rules_hash = { :name => rules_hash }
636
+
637
+ end
638
+
639
+ end
581
640
 
582
641
  # set test object type
583
642
  rules_hash[ :type ] = method_id.to_s
@@ -674,7 +733,7 @@ module MobyBehaviour
674
733
  # TODO: refactor me
675
734
  child_test_object = @test_object_factory.get_test_objects(
676
735
 
677
- # current objec t as parent, can be either TestObject or SUT
736
+ # current object as parent, can be either TestObject or SUT
678
737
  :parent => self,
679
738
 
680
739
  # pass parent application
@@ -862,7 +921,7 @@ module MobyBehaviour
862
921
  if ( attempt == 1 )
863
922
 
864
923
  # add to attribute filter
865
- MobyUtil::DynamicAttributeFilter.instance.add_attribute( name )
924
+ TDriver::AttributeFilter.add_attribute( name )
866
925
 
867
926
  # refresh test object ui state
868
927
  refresh