testability-driver 0.9.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +1 -1
  2. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +11 -7
  3. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +8 -0
  4. data/lib/tdriver/base/behaviour/factory.rb +229 -209
  5. data/lib/tdriver/base/errors.rb +3 -0
  6. data/lib/tdriver/base/state_object.rb +11 -20
  7. data/lib/tdriver/base/sut/controller.rb +4 -4
  8. data/lib/tdriver/base/sut/factory.rb +205 -170
  9. data/lib/tdriver/base/sut/generic/behaviours/application.rb +256 -174
  10. data/lib/tdriver/base/sut/generic/behaviours/find.rb +17 -11
  11. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +57 -66
  12. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +578 -497
  13. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +41 -15
  14. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +48 -19
  15. data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
  16. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +25 -13
  17. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +16 -10
  18. data/lib/tdriver/base/sut/generic/plugin.rb +9 -3
  19. data/lib/tdriver/base/sut/sut.rb +41 -33
  20. data/lib/tdriver/base/test_object/abstract.rb +26 -3
  21. data/lib/tdriver/base/test_object/adapter.rb +399 -0
  22. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +56 -14
  23. data/lib/tdriver/base/test_object/behaviours/test_object.rb +663 -197
  24. data/lib/tdriver/base/test_object/cache.rb +132 -0
  25. data/lib/tdriver/base/test_object/factory.rb +677 -426
  26. data/lib/tdriver/base/test_object/factory_new.rb +202 -0
  27. data/lib/tdriver/base/test_object/identificator.rb +24 -17
  28. data/lib/tdriver/base/test_object/loader.rb +9 -3
  29. data/lib/tdriver/base/test_object/verification.rb +181 -0
  30. data/lib/tdriver/loader.rb +1 -1
  31. data/lib/tdriver/report/report.rb +2 -0
  32. data/lib/tdriver/report/report_api.rb +4 -4
  33. data/lib/tdriver/report/report_creator.rb +29 -3
  34. data/lib/tdriver/report/report_data_presentation.rb +7 -3
  35. data/lib/tdriver/report/report_execution_statistics.rb +80 -21
  36. data/lib/tdriver/report/report_javascript.rb +192 -0
  37. data/lib/tdriver/report/report_test_case_run.rb +22 -0
  38. data/lib/tdriver/report/report_test_run.rb +62 -55
  39. data/lib/tdriver/report/report_writer.rb +57 -56
  40. data/lib/tdriver/tdriver.rb +14 -41
  41. data/lib/tdriver/util/common/error.rb +1 -0
  42. data/lib/tdriver/util/common/exceptions.rb +12 -0
  43. data/lib/tdriver/util/common/file.rb +12 -6
  44. data/lib/tdriver/util/common/gem.rb +2 -1
  45. data/lib/tdriver/util/common/hash.rb +152 -0
  46. data/lib/tdriver/util/common/kernel.rb +49 -34
  47. data/lib/tdriver/util/common/loader.rb +21 -17
  48. data/lib/tdriver/util/common/numeric.rb +39 -0
  49. data/lib/tdriver/util/common/object.rb +115 -0
  50. data/lib/tdriver/util/common/string.rb +55 -2
  51. data/lib/tdriver/util/dbaccess/dbaccess.rb +194 -161
  52. data/lib/tdriver/util/dynamic_attribute_filter.rb +6 -0
  53. data/lib/tdriver/util/hooking.rb +2 -2
  54. data/lib/tdriver/util/loader.rb +2 -2
  55. data/lib/tdriver/util/localisation/localisation.rb +277 -18
  56. data/lib/tdriver/util/logger.rb +142 -13
  57. data/lib/tdriver/util/parameter/parameter_hash.rb +8 -5
  58. data/lib/tdriver/util/parameter/parameter_xml.rb +18 -2
  59. data/lib/tdriver/util/recorder.rb +17 -12
  60. data/lib/tdriver/util/user_data/user_data.rb +3 -2
  61. data/lib/tdriver/util/{video_rec.rb → video_utils.rb} +136 -16
  62. data/lib/tdriver/util/xml/abstraction.rb +7 -0
  63. data/lib/tdriver/util/xml/attribute.rb +32 -0
  64. data/lib/tdriver/util/xml/loader.rb +8 -2
  65. data/lib/tdriver/util/xml/nil_node.rb +95 -0
  66. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +46 -7
  67. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +19 -9
  68. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +1 -1
  69. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +13 -1
  70. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +6 -0
  71. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +27 -15
  72. data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +57 -0
  73. data/lib/tdriver/util/xml/text.rb +32 -0
  74. data/lib/tdriver/util/xml/xml.rb +35 -22
  75. data/lib/tdriver/version.rb +1 -1
  76. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +41 -34
  77. data/lib/tdriver-devtools/doc/generate.rb +31 -6
  78. data/lib/tdriver-devtools/doc/xslt/template.xsl +46 -25
  79. data/lib/tdriver-devtools/tests/feature_tests/example/behaviour_example.rb +100 -0
  80. data/lib/tdriver-devtools/tests/feature_tests/update +1 -1
  81. data/lib/tdriver.rb +0 -3
  82. data/xml/behaviours/generic.xml +1 -1
  83. data/xml/defaults/generic.xml +4 -90
  84. data/xml/templates/generic.xml +33 -25
  85. metadata +21 -29
  86. data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +0 -245
  87. data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +0 -964
  88. data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +0 -68
  89. data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +0 -1865
  90. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +0 -1
  91. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +0 -3
  92. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +0 -4
  93. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +0 -4
  94. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +0 -4
  95. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +0 -3
  96. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +0 -3
  97. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +0 -1
  98. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +0 -3
  99. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +0 -3
  100. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +0 -12
  101. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +0 -5
  102. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +0 -1
  103. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +0 -2
  104. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +0 -7
  105. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +0 -14
  106. data/lib/tdriver-devtools/behaviour/xml_generator/update +0 -3
  107. data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +0 -233
  108. data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +0 -194
@@ -1 +0,0 @@
1
- <default>$ARGUMENT_DEFAULT_VALUE</default>
@@ -1,3 +0,0 @@
1
-
2
- <argument name="$ARGUMENT_NAME" optional="$ARGUMENT_OPTIONAL" type="$ARGUMENT_TYPE">
3
- $ARGUMENT_TYPES$ARGUMENT_DEFAULT_VALUE </argument>
@@ -1,4 +0,0 @@
1
- <type name="$ARGUMENT_TYPE">
2
- <description>$ARGUMENT_DESCRIPTION</description>
3
- <example>$ARGUMENT_EXAMPLE</example>
4
- </type>
@@ -1,4 +0,0 @@
1
- <exception name="$EXCEPTION_NAME">
2
- <description>$EXCEPTION_DESCRIPTION</description>
3
- </exception>
4
-
@@ -1,4 +0,0 @@
1
-
2
- <arguments>
3
- $METHOD_ARGUMENTS
4
- </arguments>
@@ -1,3 +0,0 @@
1
-
2
- <deprecated version="$DEPRECATED_IN_VERSION_NUMBER" />
3
-
@@ -1,3 +0,0 @@
1
- <exceptions>
2
-
3
- $METHOD_EXCEPTIONS </exceptions>
@@ -1,3 +0,0 @@
1
- <returns>
2
- $METHOD_RETURNS
3
- </returns>
@@ -1,3 +0,0 @@
1
- <tables>
2
- $METHOD_TABLES
3
- </tables>
@@ -1,12 +0,0 @@
1
-
2
- <method name="$METHOD_NAME" type="$METHOD_TYPE">
3
-
4
- $METHOD_DEPRECATED
5
- <description>$METHOD_DESCRIPTION</description>
6
- $METHOD_ARGUMENTS
7
- $METHOD_RETURNS
8
- $METHOD_EXCEPTIONS
9
- $METHOD_TABLES
10
- $METHOD_INFO
11
-
12
- </method>
@@ -1,5 +0,0 @@
1
-
2
- <type name="$RETURN_VALUE_TYPE">
3
- <description>$RETURN_VALUE_DESCRIPTION</description>
4
- <example>$RETURN_VALUE_EXAMPLE</example>
5
- </type>
@@ -1,7 +0,0 @@
1
-
2
- <table name="$TABLE_NAME">
3
- <title>$TABLE_TITLE</title>
4
- <header>
5
- $TABLE_HEADER_ITEMS </header>
6
- $TABLE_ROWS </table>
7
-
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <behaviours plugin="$REQUIRED_PLUGIN">
3
-
4
- <behaviour name="$BEHAVIOUR_NAME" object_type="$OBJECT_TYPE" sut_type="$SUT_TYPE" input_type="$INPUT_TYPE" version="$VERSION">
5
-
6
- <module name="$MODULE_NAME" />
7
-
8
- <methods>
9
- $BEHAVIOUR_METHODS
10
- </methods>
11
-
12
- </behaviour>
13
-
14
- </behaviours>
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env sh
2
- rm -rf behaviour_xml
3
- ruby generate.rb tdriver example/flick-example.rb
@@ -1,233 +0,0 @@
1
- ############################################################################
2
- ##
3
- ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
- ## All rights reserved.
5
- ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
- ##
7
- ## This file is part of TDriver.
8
- ##
9
- ## If you have questions regarding the use of this file, please contact
10
- ## Nokia at testabilitydriver@nokia.com .
11
- ##
12
- ## This library is free software; you can redistribute it and/or
13
- ## modify it under the terms of the GNU Lesser General Public
14
- ## License version 2.1 as published by the Free Software Foundation
15
- ## and appearing in the file LICENSE.LGPL included in the packaging
16
- ## of this file.
17
- ##
18
- ############################################################################
19
-
20
- module MobyBehaviour
21
-
22
- module QT
23
-
24
- # == description
25
- # This module contains demonstration implementation containing tags for documentation generation using gesture as an example
26
- #
27
- # == behaviour
28
- # QtExampleGestureBehaviour
29
- #
30
- # == requires
31
- # testability-driver-sut-qt-plugin
32
- #
33
- # == input_type
34
- # touch
35
- #
36
- # == sut_type
37
- # qt
38
- #
39
- # == sut_version
40
- # *
41
- #
42
- # == objects
43
- # *;sut
44
- #
45
- module Gesture
46
-
47
- #include MobyBehaviour::QT::Behaviour
48
-
49
- attr_accessor :x
50
- attr_reader :y
51
- attr_writer :z
52
-
53
- def y
54
-
55
- end
56
-
57
- def x=(value)
58
- end
59
-
60
- # == description
61
- # Cause a flick operation on the screen.
62
- #
63
- # == arguments
64
- # argument1
65
- # Integer
66
- # description: Example argument1
67
- # example: 10
68
- # default:
69
- # Hash
70
- # description: Example argument 1 type 2
71
- # example: { :optional_1 => "value_1", :optional_2 => "value_2" }
72
- # default:
73
- #
74
- # argument2
75
- # String
76
- # description: Example argument2
77
- # example: "Hello"
78
- # default:
79
- #
80
- # == returns
81
- # String
82
- # description: Return value type
83
- # example: "World"
84
- #
85
- # == exceptions
86
- # RuntimeError
87
- # description: example exception
88
- #
89
- # ArgumentError
90
- # description: example exception
91
- #
92
- # == example
93
- # flick( :Down, :Left, { :optional_1 => "value_1", :optional_2 => "value_2" } )
94
- #
95
- # == info
96
- # See method X, table at Y
97
- #
98
- # == howto
99
- # Example1
100
- # description: Basic use
101
- # code: @sut = TDriver.sut( :Id => "sut_qt" )
102
- # app = @sut.application
103
- # app.QPushButton( :text => "Close" ).flick :Left
104
- #
105
- def flick( direction, button = :Left, z = ',', optional_params = {}, y = ',' )
106
- begin
107
- use_tap_screen = optional_params[:use_tap_screen].nil? ? MobyUtil::Parameter[ @sut.id][ :use_tap_screen, 'false'] :
108
- optional_params[:use_tap_screen].to_s
109
- optional_params[:useTapScreen] = use_tap_screen
110
-
111
- speed = calculate_speed(@sut.parameter(:gesture_flick_distance), @sut.parameter(:gesture_flick_speed))
112
- distance = @sut.parameter(:gesture_flick_distance).to_i
113
- params = {:gesture_type => :MouseGesture, :direction => direction, :speed => speed, :distance => distance, :isDrag => false, :button => button, :useTapScreen => use_tap_screen}
114
- params.merge!(optional_params)
115
-
116
- do_gesture(params)
117
- do_sleep(speed)
118
-
119
- rescue Exception => e
120
-
121
- MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed flick with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
122
- Kernel::raise e
123
- end
124
-
125
- MobyUtil::Logger.instance.log "behaviour" , "PASS;Operation flick executed successfully with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
126
-
127
- nil
128
- end
129
-
130
-
131
- private
132
-
133
- # Performs the actual gesture operation.
134
- # Verifies that the parameters are correct and send the command
135
- # to the sut.
136
- # gesture_type: :MouseGesture, :MouseGestureTo, :MouseGestureToCoordinates
137
- # params = {:direction => :Up, duration => 2, :distance =>100, :isDrag =>false, :isMove =>false }
138
- def do_gesture(params)
139
- validate_gesture_params!(params)
140
-
141
- if attribute('objectType') == 'Embedded'
142
- params['x'] = center_x
143
- params['y'] = center_y
144
- params['useCoordinates'] = 'true'
145
- end
146
-
147
- command = command_params #in qt_behaviour
148
- command.command_name(params[:gesture_type].to_s)
149
- command.command_params( params )
150
- @sut.execute_command( command )
151
- end
152
-
153
- def validate_gesture_params!(params)
154
- #direction
155
- if params[:gesture_type] == :MouseGesture
156
- if params[:direction].kind_of?(Integer)
157
- raise ArgumentError.new( "Invalid direction." ) unless 0 <= params[:direction].to_i and params[:direction].to_i <= 360
158
- else
159
- raise ArgumentError.new( "Invalid direction." ) unless @@_valid_directions.include?(params[:direction])
160
- params[:direction] = @@_direction_map[params[:direction]]
161
- end
162
- #distance
163
- params[:distance] = params[:distance].to_i unless params[:distance].kind_of?(Integer)
164
- raise ArgumentError.new( "Distance must be an integer and greater than zero." ) unless params[:distance] > 0
165
- elsif params[:gesture_type] == :MouseGestureToCoordinates
166
- raise ArgumentError.new("X and Y must be integers.") unless params[:x].kind_of?(Integer) and params[:y].kind_of?(Integer)
167
- elsif params[:gesture_type] == :MouseGestureTo
168
- raise ArgumentError.new("targetId and targetType must be defined.") unless params[:targetId] and params[:targetType]
169
- end
170
-
171
- #duration/speed
172
- params[:speed] = params[:speed].to_f unless params[:speed].kind_of?(Numeric)
173
- raise ArgumentError.new( "Duration must be a number and greated than zero, was:" + params[:speed].to_s) unless params[:speed] > 0
174
- duration_secs = params[:speed].to_f
175
- duration_secs = duration_secs*1000
176
- params[:speed] = duration_secs.to_i
177
-
178
- #mouseMove true always
179
- params[:mouseMove] = true
180
-
181
- params[:button] = :Left unless params[:button]
182
- raise ArgumentError.new( "Invalid button." ) unless @@_valid_buttons.include?(params[:button])
183
- params[:button] = @@_buttons_map[params[:button]]
184
-
185
- if params[:isMove] == true
186
- params[:press] = 'false'
187
- params[:release] = 'false'
188
- end
189
-
190
- end
191
-
192
-
193
- def do_sleep(time)
194
-
195
- if MobyUtil::Parameter[ @sut.id ][ :sleep_disabled, nil ] != 'true'
196
- time = time.to_f
197
- time = time * 1.3
198
- #for flicks the duration of the gesture is short but animation (scroll etc..) may not
199
- #so wait at least one second
200
- time = 1 if time < 1
201
- sleep time
202
- end
203
-
204
- end
205
-
206
- def calculate_speed(distance, speed)
207
-
208
- distance = distance.to_f
209
- speed = speed.to_f
210
- duration = distance/speed
211
- duration
212
-
213
- end
214
-
215
- def distance_to_point(x, y)
216
-
217
- x = x.to_i
218
- y = y.to_i
219
- dist_x = x - center_x.to_i
220
- dist_y = y - center_y.to_i
221
-
222
- return 0 if dist_y == 0 and dist_x == 0
223
- distance = Math.hypot( dist_x, dist_y )
224
- distance
225
-
226
- end
227
-
228
- end
229
-
230
- end
231
- end
232
-
233
- #MobyUtil::Logger.instance.hook_methods( MobyBehaviour::QT::Gesture )
@@ -1,194 +0,0 @@
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
- # generated behaviour implementation
21
- module MobyBehaviour
22
-
23
- # == description
24
- # This module contains example implementation containing tags for documentation generation
25
- #
26
- # == behaviour
27
- # QtExampleBehaviour
28
- #
29
- # == requires
30
- # testability-driver-sut-qt-plugin
31
- #
32
- # == input_type
33
- # *
34
- #
35
- # == sut_type
36
- # qt
37
- #
38
- # == sut_version
39
- # *
40
- #
41
- # == objects
42
- # *;sut
43
- #
44
- module Example
45
-
46
- include MobyBehaviour::Behaviour
47
-
48
- private # construction
49
-
50
- # this method will be called once module is extended to test object
51
- def self.extended( object )
52
-
53
- object.instance_exec{
54
-
55
- # default settings (optional)
56
- initialize_behaviour_settings
57
-
58
- }
59
-
60
- end
61
-
62
- # this method will be called once behaviour is extended to test object
63
- def initialize_behaviour_settings
64
-
65
- end
66
-
67
- public # behaviours
68
-
69
- # TODO: jotain
70
- # this line won't be documented
71
- #
72
- # == description
73
- # Cause a drag operation on the screen. Basically the same as flick or gesture but done slowly.
74
- #
75
- # == arguments
76
- # direction
77
- # description: Angle of direction of the drag. Supported range is from 0 to 360
78
- # example: 180
79
- # default:
80
- #
81
- # direction
82
- # type: Symbol
83
- # description: Symbol of direction of the drag. See Valid drag direction symbols table for valid values.
84
- # example: :Right
85
- # default: :Left
86
- #
87
- # distance
88
- # type: Integer
89
- # description: Distance in pixels of the drag motion
90
- # example: 10
91
- # default:
92
- #
93
- # button
94
- # type: Symbol
95
- # description: Symbol of button used for drag. See Valid drag button symbols table for valid values.
96
- # example: :Left
97
- # default: :Left
98
- #
99
- # == returns
100
- # MobyBase::TestObject
101
- # description: Target test object
102
- # example:
103
- #
104
- # MobyBase::TestObject2
105
- # description: Target test object2
106
- # example: example2
107
- #
108
- # == exceptions
109
- # MobyBase::TestObjectNotFoundError
110
- # description: If a graphics item is not visible on screen
111
- # lisäää descriptionia
112
- #
113
- # ArgumentError
114
- # description: If an invalid direction or button is given
115
- #
116
- # == example
117
- # # Drag QGraphicsItem with tooltip 'node1' down 50 pixels
118
- # @sut.application.GraphWidget.QGraphicsItem(:tooltip => 'node1').drag(:Down, 50)
119
- #
120
- # # Drag 'test_object' up 200 pixels
121
- # @test_object = @sut.application.GraphWidget.QGraphicsItem(:tooltip => 'node1')
122
- # @test_object.drag(:Up, 200)
123
- #
124
- # == see
125
- # flick, gesture
126
- def drag( direction, distance, button = :Left )
127
-
128
- # implementation
129
-
130
- end
131
- =begin
132
- # documentation for the method
133
- def []=( value )
134
-
135
- # implementation
136
-
137
- end
138
-
139
- # documentation for the method
140
- def []( value )
141
-
142
- # implementation
143
-
144
- end
145
-
146
- # documentation for the method
147
- def d
148
-
149
- # implementation
150
-
151
- end
152
-
153
- # documentation for the method
154
- def <=>( other )
155
-
156
- # implementation
157
-
158
- end
159
-
160
- # documentation for the method
161
- def e()
162
-
163
- # implementation
164
-
165
- end
166
-
167
- # documentation for the method
168
- def f!()
169
-
170
- # implementation
171
-
172
- end
173
-
174
- # documentation for the method
175
- def g?()
176
-
177
- # implementation
178
-
179
- end
180
-
181
- # documentation for the method
182
- def x# dada
183
-
184
- # implementation
185
-
186
- end
187
- =end
188
- attr_accessor :xxz
189
-
190
- attr_reader :yys
191
-
192
- end # Example
193
-
194
- end # MobyBehaviour