xqsr3 0.32.2 → 0.36.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.
- checksums.yaml +5 -5
- data/lib/xqsr3/all_extensions.rb +6 -0
- data/lib/xqsr3/array_utilities.rb +10 -0
- data/lib/xqsr3/array_utilities/join_with_or.rb +7 -14
- data/lib/xqsr3/command_line_utilities.rb +10 -0
- data/lib/xqsr3/command_line_utilities/map_option_string.rb +21 -8
- data/lib/xqsr3/containers.rb +11 -0
- data/lib/xqsr3/containers/frequency_map.rb +19 -2
- data/lib/xqsr3/containers/multi_map.rb +316 -27
- data/lib/xqsr3/conversion.rb +11 -0
- data/lib/xqsr3/conversion/bool_parser.rb +11 -14
- data/lib/xqsr3/conversion/integer_parser.rb +10 -16
- data/lib/xqsr3/diagnostics.rb +11 -0
- data/lib/xqsr3/diagnostics/exception_utilities.rb +2 -2
- data/lib/xqsr3/diagnostics/exceptions/with_cause.rb +15 -7
- data/lib/xqsr3/diagnostics/inspect_builder.rb +16 -16
- data/lib/xqsr3/doc_.rb +138 -9
- data/lib/xqsr3/extensions.rb +13 -0
- data/lib/xqsr3/extensions/array.rb +3 -0
- data/lib/xqsr3/extensions/array/join_with_or.rb +6 -0
- data/lib/xqsr3/extensions/enumerable/collect_with_index.rb +5 -4
- data/lib/xqsr3/extensions/enumerable/detect_map.rb +6 -7
- data/lib/xqsr3/extensions/hash.rb +5 -0
- data/lib/xqsr3/extensions/hash/has_match.rb +7 -0
- data/lib/xqsr3/extensions/hash/match.rb +7 -0
- data/lib/xqsr3/extensions/hash/slice.rb +22 -0
- data/lib/xqsr3/extensions/io/writelines.rb +38 -6
- data/lib/xqsr3/extensions/kernel/integer.rb +6 -13
- data/lib/xqsr3/extensions/string/to_bool.rb +4 -0
- data/lib/xqsr3/extensions/test/unit/assert_eql.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_false.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_not.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_not_eql.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_raise_with_message.rb +25 -4
- data/lib/xqsr3/extensions/test/unit/assert_subclass_of.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_superclass_of.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_true.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_type_has_instance_methods.rb +3 -12
- data/lib/xqsr3/hash_utilities.rb +11 -0
- data/lib/xqsr3/hash_utilities/deep_transform.rb +2 -2
- data/lib/xqsr3/hash_utilities/key_matching.rb +6 -4
- data/lib/xqsr3/internal_/test_unit_version_.rb +30 -4
- data/lib/xqsr3/io/writelines.rb +55 -19
- data/lib/xqsr3/quality.rb +8 -1
- data/lib/xqsr3/quality/parameter_checking.rb +52 -78
- data/lib/xqsr3/string_utilities.rb +16 -0
- data/lib/xqsr3/string_utilities/ends_with.rb +16 -7
- data/lib/xqsr3/string_utilities/nil_if_empty.rb +8 -4
- data/lib/xqsr3/string_utilities/nil_if_whitespace.rb +9 -4
- data/lib/xqsr3/string_utilities/quote_if.rb +12 -14
- data/lib/xqsr3/string_utilities/starts_with.rb +23 -5
- data/lib/xqsr3/string_utilities/to_symbol.rb +24 -5
- data/lib/xqsr3/string_utilities/truncate.rb +20 -4
- data/lib/xqsr3/version.rb +3 -2
- data/test/unit/containers/tc_multi_map.rb +174 -16
- data/test/unit/extensions/hash/tc_hash.rb +6 -0
- data/test/unit/extensions/hash/tc_slice.rb +31 -0
- data/test/unit/extensions/io/tc_writelines.rb +36 -0
- metadata +16 -3
@@ -54,6 +54,7 @@
|
|
54
54
|
module Xqsr3
|
55
55
|
module Conversion
|
56
56
|
|
57
|
+
# +include-able module that provides Boolean parsing
|
57
58
|
module BoolParser
|
58
59
|
|
59
60
|
private
|
@@ -69,30 +70,26 @@ module BoolParser
|
|
69
70
|
|
70
71
|
public
|
71
72
|
|
73
|
+
# Recognised truey values
|
72
74
|
DEFAULT_TRUE_VALUES = [ /true/i, '1' ]
|
75
|
+
# Recognised falsey values
|
73
76
|
DEFAULT_FALSE_VALUES = [ /false/i, '0' ]
|
74
77
|
|
75
|
-
# Attempts to parse the given
|
78
|
+
# Attempts to parse the given string +s+ to a Boolean value, based on the
|
76
79
|
# given +options+
|
77
80
|
#
|
78
81
|
# === Signature
|
79
82
|
#
|
80
83
|
# * *Parameters:*
|
81
|
-
# - +
|
84
|
+
# - +s+ The string to be parsed
|
85
|
+
# - +options+ An options hash, containing any of the following options
|
82
86
|
#
|
83
87
|
# * *Options:*
|
84
|
-
# - +:false_values
|
85
|
-
#
|
86
|
-
#
|
87
|
-
# - +:
|
88
|
-
#
|
89
|
-
# +DEFAULT_TRUE_VALUES+
|
90
|
-
# - +:default_value+:: An object to be returned if matching fails.
|
91
|
-
# Defaults to +nil+
|
92
|
-
# - +:false_value+:: An object to be returned if matching succeeds to
|
93
|
-
# match against +:false_values+.
|
94
|
-
# - +:true_value+:: An object to be returned if matching succeeds to
|
95
|
-
# match against +:true_values+.
|
88
|
+
# - +:false_values+ (::Array) An array of strings or regular expressions against which to match for false value. Defaults to +DEFAULT_FALSE_VALUES+
|
89
|
+
# - +:true_values+ (::Array) An array of strings or regular expressions against which to match for true value. Defaults to +DEFAULT_TRUE_VALUES+
|
90
|
+
# - +:default_value+ An object to be returned if matching fails. Defaults to +nil+
|
91
|
+
# - +:false_value+ An object to be returned if matching succeeds to match against +:false_values+. Defaults to +false+
|
92
|
+
# - +:true_value+ An object to be returned if matching succeeds to match against +:true_values+. Defaults to +true+
|
96
93
|
def self.to_bool s, **options
|
97
94
|
|
98
95
|
true_values = options[:true_values] || DEFAULT_TRUE_VALUES
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# module
|
7
7
|
#
|
8
8
|
# Created: 21st November 2017
|
9
|
-
# Updated:
|
9
|
+
# Updated: 15th April 2019
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/xqsr3
|
12
12
|
#
|
@@ -54,10 +54,12 @@
|
|
54
54
|
module Xqsr3
|
55
55
|
module Conversion
|
56
56
|
|
57
|
+
# +include-able module that provides Integer parsing
|
57
58
|
module IntegerParser
|
58
59
|
|
59
60
|
private
|
60
|
-
|
61
|
+
# @!visibility private
|
62
|
+
module IntegerParser_Helper_ # :nodoc: all
|
61
63
|
|
62
64
|
if Kernel.respond_to?(:xqsr3_Integer_original_method)
|
63
65
|
|
@@ -156,22 +158,14 @@ module IntegerParser
|
|
156
158
|
# === Signature
|
157
159
|
#
|
158
160
|
# * *Parameters:*
|
159
|
-
# - +arg
|
160
|
-
# - +base
|
161
|
-
# - +options
|
162
|
-
#
|
163
|
-
# - +block+:: An optional caller-supplied 4-parameter block -
|
164
|
-
# taking the exception, +arg+, +base+, and +options+ - that will be
|
165
|
-
# invoked with the +ArgumentError+ exception, allowing the caller to
|
166
|
-
# take additional action. If the block returns then its return value
|
167
|
-
# will be returned to the caller
|
161
|
+
# - +arg+ The argument to be converted (to +Fixnum+ or +Bignum+)
|
162
|
+
# - +base+ A value of 0, or between 2 and 36. Defaults to 0
|
163
|
+
# - +options+ An options hash, containing any of the following options
|
164
|
+
# - +block+ An optional caller-supplied 4-parameter block - taking the exception, +arg+, +base+, and +options+ - that will be invoked with the +ArgumentError+ exception, allowing the caller to take additional action. If the block returns then its return value will be returned to the caller
|
168
165
|
#
|
169
166
|
# * *Options:*
|
170
|
-
# - +:default
|
171
|
-
#
|
172
|
-
# - +:nil+:: Returns +nil+ if +arg+ is +nil+ or cannot be
|
173
|
-
# converted by (the original) +Kernel#Integer+. Ignored if
|
174
|
-
# +:default+ is specified
|
167
|
+
# - +:default+ A default value to be used when +arg+ is +nil+ or cannot be converted by (the original) +Kernel#Integer+
|
168
|
+
# - +:nil+ Returns +nil+ if +arg+ is +nil+ or cannot be converted by (the original) +Kernel#Integer+. Ignored if +:default+ is specified
|
175
169
|
def self.to_integer arg, base = 0, **options, &block
|
176
170
|
|
177
171
|
IntegerParser_Helper_.to_integer_ arg, base, options, &block
|
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: Definition of the WithCause inclusion module
|
6
6
|
#
|
7
7
|
# Created: 16th December 2017
|
8
|
-
# Updated:
|
8
|
+
# Updated: 12th April 2019
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/xqsr3
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2017-
|
14
|
+
# Copyright (c) 2017-2019, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -66,6 +66,7 @@ module Exceptions
|
|
66
66
|
#
|
67
67
|
module WithCause
|
68
68
|
|
69
|
+
# Array of hidden fields
|
69
70
|
INSPECT_HIDDEN_FIELDS = [ 'has_implicit_message', 'uses_cause_message' ]
|
70
71
|
|
71
72
|
# Defines an initializer for an exception class that allows a cause (aka
|
@@ -75,13 +76,11 @@ module WithCause
|
|
75
76
|
# === Signature
|
76
77
|
#
|
77
78
|
# * *Parameters:*
|
78
|
-
# -
|
79
|
-
# - +
|
79
|
+
# - +args+ 0+ arguments passed through to the +include+-ing class' initialiser
|
80
|
+
# - +options+ Options hash
|
80
81
|
#
|
81
82
|
# * *Options:*
|
82
|
-
# - +:cause+ - The exception to be used as a cause, and ensures that
|
83
|
-
# that is not inferred from the arguments. May be +nil+ to ensure
|
84
|
-
# that no cause is inferred
|
83
|
+
# - +:cause+ - The exception to be used as a cause, and ensures that that is not inferred from the arguments. May be +nil+ to ensure that no cause is inferred
|
85
84
|
def initialize(*args, **options)
|
86
85
|
|
87
86
|
@uses_cause_message = false
|
@@ -143,6 +142,15 @@ module WithCause
|
|
143
142
|
# present
|
144
143
|
attr_reader :options
|
145
144
|
|
145
|
+
# Message obtained by concatenation of all chained exceptions' messages
|
146
|
+
#
|
147
|
+
# === Signature
|
148
|
+
#
|
149
|
+
# * *Parameters:*
|
150
|
+
# - +options+ Options hash
|
151
|
+
#
|
152
|
+
# * *Options:*
|
153
|
+
# - +:separator+ (String) A string used to separate each chained exception message. Defaults to ": "
|
146
154
|
def chained_message **options
|
147
155
|
|
148
156
|
return message unless cause
|
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: ::Xqsr3::Diagnostics::InspectBuilder module
|
6
6
|
#
|
7
7
|
# Created: 4th September 2018
|
8
|
-
# Updated:
|
8
|
+
# Updated: 12th April 2019
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/xqsr3
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2018, Matthew Wilson and Synesis Software
|
14
|
+
# Copyright (c) 2018-2019, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -54,30 +54,28 @@ module Diagnostics
|
|
54
54
|
|
55
55
|
module InspectBuilder
|
56
56
|
|
57
|
-
|
57
|
+
# @!visibility private
|
58
|
+
module InspectBuilder_Utilities # :nodoc: all
|
58
59
|
|
60
|
+
# @!visibility private
|
59
61
|
NORMALISE_FUNCTION = lambda { |ar| ar.map { |v| v.to_s }.map { |v| '@' == v[0] ? v : "@#{v}" } }
|
60
62
|
end # module InspectBuilder_Utilities
|
61
63
|
|
64
|
+
# Generates an inspect string for the +include+-ing class
|
62
65
|
#
|
63
66
|
# === Signature
|
64
67
|
#
|
65
68
|
# * *Parameters:*
|
66
|
-
#
|
67
|
-
# will be built
|
69
|
+
# - +o+ The target of the +inspect+ message for which a message will be built
|
68
70
|
#
|
69
71
|
# * *Options:*
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
# (when +:show_fields+ is specified).
|
75
|
-
#
|
76
|
-
#
|
77
|
-
# @option +:truncate_width+:: (Integer) Specifies a maximum width for
|
78
|
-
# the values of fields
|
79
|
-
# @option +:deep_inspect+:: (boolean) Causes fields' values to be
|
80
|
-
# obtained via their own +inspect+ methods
|
72
|
+
# - +:no_class+ (boolean) Elides the class qualification
|
73
|
+
# - +:no_object_id+ (boolean) Elides the object id
|
74
|
+
# - +:show_fields+ (boolean) Shows (all) object fields
|
75
|
+
# - +:hidden_fields+ ([ String ]) Names of fields to be omitted (when +:show_fields+ is specified). Overridden by +:shown_fields+
|
76
|
+
# - +:shown_fields+ ([ String ]) Names of fields to be shown (when +:show_fields+ is specified). Overrides +:hidden_fields+
|
77
|
+
# - +:truncate_width+ (Integer) Specifies a maximum width for the values of fields
|
78
|
+
# - +:deep_inspect+ (boolean) Causes fields' values to be obtained via their own +inspect+ methods
|
81
79
|
def self.make_inspect o, **options
|
82
80
|
|
83
81
|
r = ''
|
@@ -161,6 +159,8 @@ module InspectBuilder
|
|
161
159
|
end
|
162
160
|
|
163
161
|
# Creates an inspect string from self
|
162
|
+
#
|
163
|
+
# see InspectBuilder::make_inspect
|
164
164
|
def make_inspect **options
|
165
165
|
|
166
166
|
::Xqsr3::Diagnostics::InspectBuilder.make_inspect self, **options
|
data/lib/xqsr3/doc_.rb
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: Documentation of the ::Xqsr3 modules
|
6
6
|
#
|
7
7
|
# Created: 10th June 2016
|
8
|
-
# Updated:
|
8
|
+
# Updated: 12th April 2019
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/xqsr3
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2016, Matthew Wilson and Synesis Software
|
14
|
+
# Copyright (c) 2016-2019, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -58,24 +58,36 @@
|
|
58
58
|
# * ::Xqsr3::StringUtilities
|
59
59
|
module Xqsr3
|
60
60
|
|
61
|
+
# Array utilities
|
62
|
+
#
|
63
|
+
# === Subordinate modules of interest
|
64
|
+
# * ::Xqsr3::ArrayUtilities::JoinWithOr
|
65
|
+
module ArrayUtilities
|
66
|
+
end # module ArrayUtilities
|
67
|
+
|
61
68
|
# Command-line Utilities
|
62
69
|
#
|
63
70
|
# === Subordinate modules of interest
|
64
71
|
# * ::Xqsr3::CommandLineUtilities::MapOptionString
|
65
72
|
module CommandLineUtilities
|
66
|
-
|
67
73
|
end # module CommandLineUtilities
|
68
74
|
|
69
75
|
# Containers
|
70
76
|
#
|
71
77
|
module Containers
|
72
|
-
|
73
78
|
end # module Containers
|
74
79
|
|
80
|
+
# Conversion
|
81
|
+
#
|
82
|
+
module Conversion
|
83
|
+
end # module Conversion
|
84
|
+
|
75
85
|
# Diagnostic facilities
|
76
86
|
#
|
77
87
|
# === Subordinate modules of interest
|
78
88
|
# * ::Xqsr3::Diagnostics::ExceptionUtilities
|
89
|
+
# * ::Xqsr3::Diagnostics::InspectBuilder
|
90
|
+
# * ::Xqsr3::Diagnostics::Exceptions::WithCause
|
79
91
|
#
|
80
92
|
module Diagnostics
|
81
93
|
|
@@ -86,31 +98,148 @@ module Xqsr3
|
|
86
98
|
#
|
87
99
|
module ExceptionUtilities
|
88
100
|
end # module ExceptionUtilities
|
101
|
+
|
102
|
+
# Inspect builder
|
103
|
+
#
|
104
|
+
module InspectBuilder
|
105
|
+
end # module InspectBuilder
|
106
|
+
|
107
|
+
# Exception-related utilities
|
108
|
+
#
|
109
|
+
# === Components of interest
|
110
|
+
# * ::Xqsr3::Diagnostics::Exceptions::WithCause
|
111
|
+
#
|
112
|
+
module Exceptions
|
113
|
+
end # module Exceptions
|
89
114
|
end # module Diagnostics
|
90
115
|
|
91
|
-
#
|
116
|
+
# Hash utilities
|
92
117
|
#
|
93
|
-
|
118
|
+
# === Subordinate modules of interest
|
119
|
+
# * ::Xqsr3::HashUtilities::DeepTransform
|
120
|
+
# * ::Xqsr3::HashUtilities::KeyMatching
|
121
|
+
module HashUtilities
|
94
122
|
|
95
|
-
|
123
|
+
# Exception-related utilities
|
124
|
+
#
|
125
|
+
# === Components of interest
|
126
|
+
# * ::Xqsr3::Diagnostics::HashUtilities::deep_transform
|
127
|
+
# * ::Xqsr3::Diagnostics::HashUtilities::deep_transform!
|
128
|
+
#
|
129
|
+
module DeepTransform
|
130
|
+
end # module DeepTransform
|
131
|
+
end # module HashUtilities
|
132
|
+
|
133
|
+
# IO
|
134
|
+
#
|
135
|
+
class IO
|
136
|
+
end # class IO
|
96
137
|
|
97
138
|
# Quality
|
98
139
|
#
|
99
140
|
# === Subordinate modules of interest
|
100
141
|
# * ::Xqsr3::Quality::ParameterChecking
|
101
142
|
module Quality
|
102
|
-
|
103
143
|
end # module Quality
|
104
144
|
|
105
145
|
# String utilities
|
106
146
|
#
|
107
147
|
# === Subordinate modules of interest
|
148
|
+
# * ::Xqsr3::StringUtilities::EndsWith
|
149
|
+
# * ::Xqsr3::StringUtilities::NilIfEmpty
|
150
|
+
# * ::Xqsr3::StringUtilities::NilIfWhitespace
|
151
|
+
# * ::Xqsr3::StringUtilities::QuoteIf
|
152
|
+
# * ::Xqsr3::StringUtilities::StartsWith
|
108
153
|
# * ::Xqsr3::StringUtilities::ToSymbol
|
154
|
+
# * ::Xqsr3::StringUtilities::Truncate
|
109
155
|
module StringUtilities
|
110
156
|
|
157
|
+
=begin
|
158
|
+
module EndsWith
|
159
|
+
end # module EndsWith
|
160
|
+
module NilIfEmpty
|
161
|
+
end # module NilIfEmpty
|
162
|
+
module NilIfWhitespace
|
163
|
+
end # module NilIfWhitespace
|
164
|
+
module QuoteIf
|
165
|
+
end # module QuoteIf
|
166
|
+
module StartsWith
|
167
|
+
end # module StartsWith
|
168
|
+
module ToSymbol
|
169
|
+
end # module ToSymbol
|
170
|
+
module Truncate
|
171
|
+
end # module Truncate
|
172
|
+
=end
|
111
173
|
end # module StringUtilities
|
112
|
-
|
113
174
|
end # module Xqsr3
|
114
175
|
|
176
|
+
# Standard class, extended with methods:
|
177
|
+
#
|
178
|
+
# - Array#join_with_or
|
179
|
+
class Array; end
|
180
|
+
|
181
|
+
# Standard module, extended with methods:
|
182
|
+
#
|
183
|
+
# - Enumerable#collect_with_index
|
184
|
+
# - Enumerable#detect_map
|
185
|
+
# - Enumerable#unique
|
186
|
+
module Enumerable; end
|
187
|
+
|
188
|
+
# Standard class, extended with methods:
|
189
|
+
#
|
190
|
+
# - Hash#deep_transform
|
191
|
+
# - Hash#has_match?
|
192
|
+
# - Hash#match
|
193
|
+
class Hash; end
|
194
|
+
|
195
|
+
# Standard class, extended with methods:
|
196
|
+
#
|
197
|
+
# - IO#writelines
|
198
|
+
class IO; end
|
199
|
+
|
200
|
+
# Standard module, extended with methods:
|
201
|
+
#
|
202
|
+
# - Kernel::Integer
|
203
|
+
# - Kernel#raise_with_options
|
204
|
+
module Kernel; end
|
205
|
+
|
206
|
+
# Standard class, extended with methods:
|
207
|
+
#
|
208
|
+
# - String#ends_with?
|
209
|
+
# - String#map_option_string
|
210
|
+
# - String#nil_if_empty
|
211
|
+
# - String#nil_if_whitespace
|
212
|
+
# - String#quote_if
|
213
|
+
# - String#starts_with?
|
214
|
+
# - String#to_bool
|
215
|
+
# - String#to_symbol
|
216
|
+
# - String#truncate
|
217
|
+
class String; end
|
218
|
+
|
219
|
+
# Standard module
|
220
|
+
module Test
|
221
|
+
|
222
|
+
# Standard module
|
223
|
+
module Unit
|
224
|
+
|
225
|
+
# Standard module
|
226
|
+
#
|
227
|
+
# === Components of interest
|
228
|
+
# * ::Test::Unit::Assertions#assert_eql
|
229
|
+
# * ::Test::Unit::Assertions#assert_false
|
230
|
+
# * ::Test::Unit::Assertions#assert_not
|
231
|
+
# * ::Test::Unit::Assertions#assert_not_eql
|
232
|
+
# * ::Test::Unit::Assertions#assert_raise_with_message
|
233
|
+
# * ::Test::Unit::Assertions#assert_subclass_of
|
234
|
+
# * ::Test::Unit::Assertions#assert_superclass_of
|
235
|
+
# * ::Test::Unit::Assertions#assert_true
|
236
|
+
# * ::Test::Unit::Assertions#assert_type_has_instance_methods
|
237
|
+
module Assertions
|
238
|
+
end # module Assertions
|
239
|
+
end # module Unit
|
240
|
+
end # module Test
|
241
|
+
|
242
|
+
|
115
243
|
# ############################## end of file ############################# #
|
116
244
|
|
245
|
+
|