testability-driver 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +2 -2
- data/lib/tdriver-devtools/tdriver-devtools.rb +1 -1
- data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +3 -3
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +6 -1
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +5 -3
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +1 -1
- data/lib/tdriver/base/behaviour/factory.rb +225 -225
- data/lib/tdriver/base/errors.rb +1 -1
- data/lib/tdriver/base/state_object.rb +227 -179
- data/lib/tdriver/base/sut/controller.rb +2 -2
- data/lib/tdriver/base/sut/factory.rb +190 -182
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +69 -25
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +1 -1
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +4 -4
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +3 -3
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +350 -165
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +9 -9
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +191 -103
- data/lib/tdriver/base/sut/generic/commands/application.rb +1 -1
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +1 -1
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +1 -1
- data/lib/tdriver/base/sut/generic/plugin.rb +1 -1
- data/lib/tdriver/base/sut/sut.rb +5 -1
- data/lib/tdriver/base/test_object/abstract.rb +136 -151
- data/lib/tdriver/base/test_object/adapter.rb +293 -82
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +20 -17
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +159 -532
- data/lib/tdriver/base/test_object/cache.rb +1 -1
- data/lib/tdriver/base/test_object/factory.rb +254 -605
- data/lib/tdriver/base/test_object/identificator.rb +1 -1
- data/lib/tdriver/base/test_object/loader.rb +1 -1
- data/lib/tdriver/base/test_object/verification.rb +17 -17
- data/lib/tdriver/loader.rb +20 -9
- data/lib/tdriver/report/report.rb +5 -0
- data/lib/tdriver/report/report_creator.rb +2 -2
- data/lib/tdriver/report/report_cucumber_listener.rb +4 -4
- data/lib/tdriver/report/report_cucumber_reporter.rb +4 -4
- data/lib/tdriver/report/report_execution_statistics.rb +22 -22
- data/lib/tdriver/report/report_grouping.rb +2 -2
- data/lib/tdriver/report/report_javascript.rb +11 -4
- data/lib/tdriver/report/report_test_case_run.rb +2 -2
- data/lib/tdriver/report/report_test_run.rb +5 -5
- data/lib/tdriver/report/report_test_unit.rb +74 -26
- data/lib/tdriver/report/report_writer.rb +70 -13
- data/lib/tdriver/tdriver.rb +17 -8
- data/lib/tdriver/util/common/array.rb +1 -1
- data/lib/tdriver/util/common/crc16.rb +1 -1
- data/lib/tdriver/util/common/environment.rb +1 -1
- data/lib/tdriver/util/common/file.rb +18 -9
- data/lib/tdriver/util/common/gem.rb +1 -1
- data/lib/tdriver/util/common/hash.rb +21 -0
- data/lib/tdriver/util/common/kernel.rb +1 -1
- data/lib/tdriver/util/common/loader.rb +5 -2
- data/lib/tdriver/util/common/numeric.rb +54 -3
- data/lib/tdriver/util/common/retryable.rb +30 -12
- data/lib/tdriver/util/common/stackable.rb +185 -0
- data/lib/tdriver/util/common/string.rb +21 -5
- data/lib/tdriver/util/{dbaccess/dbaccess.rb → database/access.rb} +4 -1
- data/lib/tdriver/util/{dbaccess/dbconnection.rb → database/connection.rb} +3 -0
- data/lib/tdriver/util/{dbaccess → database}/error.rb +0 -1
- data/lib/tdriver/util/{dbaccess → database}/loader.rb +5 -6
- data/lib/tdriver/util/{dynamic_attribute_filter.rb → filters/dynamic_attributes.rb} +1 -1
- data/lib/tdriver/util/hooking/hooking.rb +477 -0
- data/lib/tdriver/util/loader.rb +35 -29
- data/lib/tdriver/util/localisation/error.rb +0 -1
- data/lib/tdriver/util/localisation/loader.rb +1 -4
- data/lib/tdriver/util/localisation/localisation.rb +30 -27
- data/lib/tdriver/util/{common.rb → logger/loader.rb} +2 -4
- data/lib/tdriver/util/logger/logger.rb +574 -0
- data/lib/tdriver/util/operator_data/loader.rb +4 -3
- data/lib/tdriver/util/operator_data/operator_data.rb +5 -5
- data/lib/tdriver/util/parameter/parameter.rb +7 -1
- data/lib/tdriver/util/parameter/parameter_hash.rb +1 -1
- data/lib/tdriver/util/parameter/parameter_template.rb +1 -1
- data/lib/tdriver/util/parameter/parameter_user_api.rb +28 -20
- data/lib/tdriver/util/parameter/parameter_xml.rb +1 -1
- data/lib/tdriver/util/plugin/abstract.rb +1 -1
- data/lib/tdriver/util/plugin/service.rb +1 -1
- data/lib/tdriver/util/{localisation.rb → recorder/loader.rb} +4 -3
- data/lib/tdriver/util/recorder/recorder.rb +66 -0
- data/lib/tdriver/util/recorder/scripter.rb +258 -0
- data/lib/tdriver/util/{stats.rb → statistics/statistics.rb} +7 -8
- data/lib/tdriver/util/user_data/error.rb +0 -1
- data/lib/tdriver/util/user_data/loader.rb +1 -2
- data/lib/tdriver/util/user_data/user_data.rb +6 -6
- data/lib/tdriver/util/video/camera.rb +67 -0
- data/lib/tdriver/util/video/camera_linux.rb +139 -0
- data/lib/tdriver/util/video/camera_windows.rb +174 -0
- data/lib/tdriver/util/video/loader.rb +31 -0
- data/lib/tdriver/util/video/video_utils.rb +139 -0
- data/lib/tdriver/util/xml/abstraction.rb +56 -5
- data/lib/tdriver/util/xml/builder.rb +2 -5
- data/lib/tdriver/util/{parameter.rb → xml/comment.rb} +10 -2
- data/lib/tdriver/util/xml/loader.rb +32 -22
- data/lib/tdriver/util/xml/nil_node.rb +2 -2
- data/lib/tdriver/util/xml/parsers/loader.rb +0 -1
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +18 -44
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +9 -13
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +9 -3
- data/lib/tdriver/util/xml/parsers/nokogiri/comment.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +6 -11
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +2 -122
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +26 -16
- data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +203 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +1 -2
- data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +2 -20
- data/lib/tdriver/util/xml/xml.rb +52 -20
- data/lib/tdriver/verify/verify.rb +238 -81
- data/xml/behaviours/generic.xml +12 -10
- metadata +156 -180
- data/lib/tdriver/base/test_object/factory_new.rb +0 -202
- data/lib/tdriver/util/hooking.rb +0 -434
- data/lib/tdriver/util/logger.rb +0 -506
- data/lib/tdriver/util/recorder.rb +0 -297
- data/lib/tdriver/util/video_utils.rb +0 -384
- data/lib/tdriver/util/xml/nil_element.rb +0 -89
@@ -0,0 +1,31 @@
|
|
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
|
+
# video utils module
|
21
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'video_utils.rb' ) )
|
22
|
+
|
23
|
+
# camera implementation
|
24
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'camera.rb' ) )
|
25
|
+
|
26
|
+
# camera windows implementation
|
27
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'camera_windows.rb' ) )
|
28
|
+
|
29
|
+
# camera linux implementation
|
30
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'camera_linux.rb' ) )
|
31
|
+
|
@@ -0,0 +1,139 @@
|
|
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 MobyUtil
|
21
|
+
|
22
|
+
# class VideoUtil ???
|
23
|
+
|
24
|
+
# Checks if the target video contains enough activity to be considered active or static.
|
25
|
+
#
|
26
|
+
# === params
|
27
|
+
# in_target_video: String, Name and path of video file to analyze
|
28
|
+
# in_fps: (optional) Numeric, frames to be analyzed per second
|
29
|
+
# in_image_treshold: (optional) Numeric, minimum change between two frames for them to be considered different
|
30
|
+
# in_video_treshold: (optional) Numeric, Minimum percentage of frames with changes for the video to be considered alive.
|
31
|
+
# in_verbose: (optional) Boolean, True for verbose output including target video statistics
|
32
|
+
def self.video_alive?( in_target_video, in_fps = 1, in_image_treshold = 4, in_video_treshold = 35, in_verbose = false )
|
33
|
+
|
34
|
+
puts "Arguments fps: " << in_fps.inspect << " frame: " << in_image_treshold.inspect << " video: " << in_video_treshold.inspect if in_verbose
|
35
|
+
|
36
|
+
in_change = in_image_treshold / 100.0
|
37
|
+
|
38
|
+
alive_temp_folder = "temp_target_alive"
|
39
|
+
|
40
|
+
require 'RMagick'
|
41
|
+
|
42
|
+
raise ArgumentError.new( "The FPS argument must be an Interger or a Float, it was a #{ in_fps.class }." ) unless in_fps.kind_of? Numeric
|
43
|
+
raise ArgumentError.new( "The frame treshold argument must be an Interger or a Float, it was a #{ in_image_treshold.class }." ) unless in_image_treshold.kind_of? Numeric
|
44
|
+
raise ArgumentError.new( "The video treshold argument must be an Interger or a Float, it was a #{ in_video_treshold.class }." ) unless in_video_treshold.kind_of? Numeric
|
45
|
+
|
46
|
+
ts = Time.now if in_verbose
|
47
|
+
|
48
|
+
begin
|
49
|
+
FileUtils.remove_dir alive_temp_folder
|
50
|
+
rescue
|
51
|
+
# failed to remove dir, do nothing
|
52
|
+
end
|
53
|
+
|
54
|
+
begin
|
55
|
+
FileUtils.mkdir_p alive_temp_folder
|
56
|
+
rescue
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
begin
|
61
|
+
File.delete 'video_split.log' if File.exist? 'video_split.log'
|
62
|
+
rescue
|
63
|
+
end
|
64
|
+
|
65
|
+
if in_verbose
|
66
|
+
system('ffmpeg -v 0 -i '+in_target_video.to_s+' -y -f image2 -r '+in_fps.to_s+' '+alive_temp_folder+'/frame-%05d.png')
|
67
|
+
else
|
68
|
+
system('ffmpeg 2>video_split.log -v 0 -i '+in_target_video.to_s+' -y -f image2 -r '+in_fps.to_s+' '+alive_temp_folder+'/frame-%05d.png')
|
69
|
+
end
|
70
|
+
|
71
|
+
puts "Video processing duration: " << (Time.now - ts).to_s if in_verbose
|
72
|
+
|
73
|
+
t_start = Time.now
|
74
|
+
|
75
|
+
im_files = Dir.glob( alive_temp_folder + '/frame-*.png' )
|
76
|
+
|
77
|
+
raise RuntimeError.new( "No video frames found for analysis." ) if im_files.size == 0
|
78
|
+
|
79
|
+
d_max = 0.0
|
80
|
+
d_min = 1.0
|
81
|
+
|
82
|
+
d_sum = 0.0
|
83
|
+
|
84
|
+
dif_count = 0
|
85
|
+
|
86
|
+
pre_obj = Magick::ImageList.new(im_files[0])
|
87
|
+
|
88
|
+
(im_files.size-1).times do | im_index |
|
89
|
+
|
90
|
+
im_file = Magick::ImageList.new(im_files[ im_index ])
|
91
|
+
pre_file = pre_obj
|
92
|
+
|
93
|
+
dif = pre_file.compare_channel(im_file, Magick::RootMeanSquaredErrorMetric)[1]
|
94
|
+
if in_verbose
|
95
|
+
d_min = dif unless dif >= d_min
|
96
|
+
d_max = dif unless dif <= d_max
|
97
|
+
d_sum += dif
|
98
|
+
end
|
99
|
+
dif_count += 1 if dif > in_change
|
100
|
+
puts "Processing image: " << im_file.to_s << " I: " << (im_index+1).to_s << " C: " << dif.to_s if in_verbose
|
101
|
+
|
102
|
+
pre_obj = im_file
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
if in_verbose
|
107
|
+
|
108
|
+
time_now = Time.now
|
109
|
+
|
110
|
+
puts "Max difference: " << d_max.to_s << "\nMin difference: " << d_min.to_s << "\n"
|
111
|
+
puts "Mean difference: " << (d_sum/im_files.size).to_s unless im_files.size == 0
|
112
|
+
puts "Count of images exceeding difference tolerance: " << dif_count.to_s
|
113
|
+
|
114
|
+
puts "Fraction of images exceeding difference tolerance: " << (dif_count.to_f/im_files.size).to_s unless im_files.size == 0
|
115
|
+
puts "Analysis duration: " << (time_now - t_start).to_s
|
116
|
+
puts "Total duration: " << (time_now - ts).to_s
|
117
|
+
end
|
118
|
+
|
119
|
+
begin
|
120
|
+
FileUtils.remove_dir alive_temp_folder
|
121
|
+
rescue
|
122
|
+
end
|
123
|
+
|
124
|
+
begin
|
125
|
+
File.delete 'video_split.log' if File.exist? 'video_split.log'
|
126
|
+
rescue
|
127
|
+
end
|
128
|
+
|
129
|
+
# Check if enough frames had changes
|
130
|
+
return (dif_count.to_f/im_files.size)*100 >= in_video_treshold
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
# enable hooking for performance measurement & debug logging
|
135
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
136
|
+
|
137
|
+
# end # VideoUtil ???
|
138
|
+
|
139
|
+
end
|
@@ -23,17 +23,68 @@ module MobyUtil
|
|
23
23
|
|
24
24
|
module Abstraction
|
25
25
|
|
26
|
-
attr_accessor :xml
|
26
|
+
attr_accessor :xml
|
27
27
|
|
28
|
-
|
28
|
+
# TODO: document me
|
29
|
+
def initialize( xml = nil )
|
29
30
|
|
30
|
-
@xml
|
31
|
+
@xml = xml
|
31
32
|
|
32
33
|
end
|
33
34
|
|
35
|
+
# TODO: document me
|
36
|
+
def comment?
|
37
|
+
|
38
|
+
self.kind_of?( MobyUtil::XML::Comment )
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
# TODO: document me
|
43
|
+
def text?
|
44
|
+
|
45
|
+
self.kind_of?( MobyUtil::XML::Text )
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
# TODO: document me
|
50
|
+
def attribute?
|
51
|
+
|
52
|
+
self.kind_of?( MobyUtil::XML::Attribute )
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
# TODO: document me
|
57
|
+
def nodeset?
|
58
|
+
|
59
|
+
self.kind_of?( MobyUtil::XML::Nodeset )
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
# TODO: document me
|
64
|
+
def element?
|
65
|
+
|
66
|
+
self.kind_of?( MobyUtil::XML::Element )
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# TODO: document me
|
71
|
+
def document?
|
72
|
+
|
73
|
+
self.kind_of?( MobyUtil::XML::Document )
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
# TODO: document me
|
78
|
+
def nil?
|
79
|
+
|
80
|
+
self.kind_of?( MobyUtil::XML::NilNode )
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
# TODO: document me
|
34
85
|
def method_missing( *args )
|
35
86
|
|
36
|
-
|
87
|
+
raise RuntimeError, "This is abstraction class of #{ self.class } - XML parser type was not specified correctly"
|
37
88
|
|
38
89
|
end
|
39
90
|
|
@@ -45,7 +96,7 @@ module MobyUtil
|
|
45
96
|
end
|
46
97
|
|
47
98
|
# enable hooking for performance measurement & debug logging
|
48
|
-
|
99
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
49
100
|
|
50
101
|
end # Abstraction
|
51
102
|
|
@@ -31,11 +31,8 @@ module MobyUtil
|
|
31
31
|
|
32
32
|
$stderr.puts "%s:%s warning: deprecated method %s#new, use %s instead" % [ caller.first.split( ":" )[ 0 .. 1 ], self.class, "MobyUtil::XML#build" ].flatten
|
33
33
|
|
34
|
-
# get current parser
|
35
|
-
@parser = MobyUtil::XML.current_parser
|
36
|
-
|
37
34
|
# extend builder behaviour of current parser
|
38
|
-
self.extend( (
|
35
|
+
self.extend( ( MobyUtil::XML.current_parser )::Builder )
|
39
36
|
|
40
37
|
# create builder object
|
41
38
|
build( &block )
|
@@ -45,7 +42,7 @@ module MobyUtil
|
|
45
42
|
end
|
46
43
|
|
47
44
|
# enable hooking for performance measurement & debug logging
|
48
|
-
|
45
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
49
46
|
|
50
47
|
end # Builder
|
51
48
|
|
@@ -17,8 +17,16 @@
|
|
17
17
|
##
|
18
18
|
############################################################################
|
19
19
|
|
20
|
+
module MobyUtil
|
20
21
|
|
21
|
-
|
22
|
+
module XML
|
22
23
|
|
23
|
-
|
24
|
+
class Comment
|
24
25
|
|
26
|
+
include Abstraction
|
27
|
+
|
28
|
+
end # Comment
|
29
|
+
|
30
|
+
end # XML
|
31
|
+
|
32
|
+
end # MobyUtil
|
@@ -17,36 +17,46 @@
|
|
17
17
|
##
|
18
18
|
############################################################################
|
19
19
|
|
20
|
-
|
21
|
-
require File.expand_path( File.join( File.dirname( __FILE__ ), 'parsers/loader.rb' ) )
|
20
|
+
[
|
22
21
|
|
23
|
-
#
|
24
|
-
|
22
|
+
# load parser implementations
|
23
|
+
'parsers/loader.rb',
|
25
24
|
|
26
|
-
#
|
27
|
-
|
25
|
+
# xml related errors
|
26
|
+
'error.rb',
|
28
27
|
|
29
|
-
# document
|
30
|
-
|
28
|
+
# abstraction module for document, element and nodeset
|
29
|
+
'abstraction.rb',
|
31
30
|
|
32
|
-
#
|
33
|
-
|
31
|
+
# comment object
|
32
|
+
'comment.rb',
|
34
33
|
|
35
|
-
#
|
36
|
-
|
34
|
+
# document object
|
35
|
+
'document.rb',
|
37
36
|
|
38
|
-
#
|
39
|
-
|
37
|
+
# element object
|
38
|
+
'element.rb',
|
40
39
|
|
41
|
-
#
|
42
|
-
|
40
|
+
# text object
|
41
|
+
'text.rb',
|
43
42
|
|
44
|
-
#
|
45
|
-
|
43
|
+
# attribute object
|
44
|
+
'attribute.rb',
|
46
45
|
|
47
|
-
#
|
48
|
-
|
46
|
+
# nil element object
|
47
|
+
'nil_node.rb',
|
49
48
|
|
50
|
-
#
|
51
|
-
|
49
|
+
# nodeset object
|
50
|
+
'nodeset.rb',
|
52
51
|
|
52
|
+
# xml Builder module
|
53
|
+
'builder.rb',
|
54
|
+
|
55
|
+
# xml api
|
56
|
+
'xml.rb'
|
57
|
+
|
58
|
+
].each{ | filename |
|
59
|
+
|
60
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), filename ) )
|
61
|
+
|
62
|
+
}
|
@@ -27,7 +27,7 @@ module MobyUtil
|
|
27
27
|
|
28
28
|
def method_missing( method, *method_arguments )
|
29
29
|
|
30
|
-
raise RuntimeError
|
30
|
+
raise RuntimeError, "Method #{ method.to_s.inspect } is not supported by #{ self.class } object (#{ MobyUtil::XML.current_parser })"
|
31
31
|
|
32
32
|
end
|
33
33
|
|
@@ -86,7 +86,7 @@ module MobyUtil
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# enable hooking for performance measurement & debug logging
|
89
|
-
|
89
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
90
90
|
|
91
91
|
end # NilElement
|
92
92
|
|
@@ -28,7 +28,7 @@ module MobyUtil
|
|
28
28
|
# TODO: Documentation
|
29
29
|
def empty?
|
30
30
|
|
31
|
-
@xml.
|
31
|
+
@xml.nil?
|
32
32
|
|
33
33
|
end
|
34
34
|
|
@@ -69,77 +69,51 @@ module MobyUtil
|
|
69
69
|
|
70
70
|
when ::Nokogiri::XML::Element
|
71
71
|
|
72
|
-
|
72
|
+
XML::Element.new( object )
|
73
|
+
|
74
|
+
when ::Nokogiri::XML::NodeSet
|
75
|
+
|
76
|
+
XML::Nodeset.new( object )
|
73
77
|
|
74
78
|
when ::Nokogiri::XML::Text
|
75
79
|
|
76
|
-
|
80
|
+
XML::Text.new( object )
|
77
81
|
|
78
82
|
when ::Nokogiri::XML::Attr
|
79
83
|
|
80
|
-
|
84
|
+
XML::Attribute.new( object )
|
85
|
+
|
86
|
+
when ::Nokogiri::XML::Comment
|
87
|
+
|
88
|
+
XML::Comment.new( object )
|
81
89
|
|
82
90
|
when ::NilClass
|
83
91
|
|
84
|
-
nil_node
|
92
|
+
#nil_node
|
93
|
+
MobyUtil::XML::NilNode.new( nil )
|
85
94
|
|
86
95
|
# do not create wrapper object if already wrapped
|
87
|
-
when ::MobyUtil::XML::Element, ::MobyUtil::XML::Nodeset, ::MobyUtil::XML::Text, ::MobyUtil::XML::Attribute, ::MobyUtil::XML::NilNode
|
96
|
+
when ::MobyUtil::XML::Element, ::MobyUtil::XML::Nodeset, ::MobyUtil::XML::Text, ::MobyUtil::XML::Attribute, ::MobyUtil::XML::NilNode, ::MobyUtil::XML::Comment
|
88
97
|
|
89
98
|
object
|
90
99
|
|
91
100
|
else
|
92
101
|
|
93
|
-
raise NotImplementedError
|
102
|
+
raise NotImplementedError, "Object wrapper for #{ object.class } not implemented - Please contact TDriver support"
|
94
103
|
|
95
104
|
end
|
96
105
|
|
97
106
|
end
|
98
107
|
|
99
|
-
# method to create MobyUtil::XML::Attribute object
|
100
|
-
def attribute_object( xml_data )
|
101
|
-
|
102
|
-
MobyUtil::XML::Attribute.new( xml_data, @parser ).extend( Attribute )
|
103
|
-
|
104
|
-
end
|
105
|
-
|
106
|
-
# method to create MobyUtil::XML::Element
|
107
|
-
def element_object( xml_data )
|
108
|
-
|
109
|
-
MobyUtil::XML::Element.new( xml_data, @parser ).extend( Element )
|
110
|
-
|
111
|
-
end
|
112
|
-
|
113
|
-
# method to create MobyUtil::XML::NilNode
|
114
|
-
def nil_node
|
115
|
-
|
116
|
-
MobyUtil::XML::NilNode.new( nil, @parser )
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
# method to create MobyUtil::XML::Text
|
121
|
-
def text_object( xml_data )
|
122
|
-
|
123
|
-
MobyUtil::XML::Text.new( xml_data, @parser ).extend( Text )
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
# method to create MobyUtil::XML::Nodeset object
|
128
|
-
def nodeset_object( xml_data )
|
129
|
-
|
130
|
-
MobyUtil::XML::Nodeset.new( xml_data, @parser ).extend( Nodeset )
|
131
|
-
|
132
|
-
end
|
133
|
-
|
134
108
|
# TODO: Documentation
|
135
109
|
def method_missing( method, *args, &block )
|
136
110
|
|
137
|
-
raise RuntimeError
|
111
|
+
raise RuntimeError, "Method #{ method.to_s.inspect } is not supported by #{ self.class } object (#{ MobyUtil::XML.current_parser })"
|
138
112
|
|
139
113
|
end
|
140
114
|
|
141
115
|
# enable hooking for performance measurement & debug logging
|
142
|
-
|
116
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
143
117
|
|
144
118
|
end # Abstraction
|
145
119
|
|