testability-driver 1.0.3 → 1.0.4
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.
- 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
|
|