ndr_support 5.10.3 → 5.10.5
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 +4 -4
- data/CHANGELOG.md +12 -1
- data/LICENSE.txt +1 -1
- data/README.md +3 -3
- data/lib/ndr_support/concerns/working_days.rb +12 -1
- data/lib/ndr_support/date_and_time_extensions.rb +12 -11
- data/lib/ndr_support/ourdate/build_datetime.rb +1 -5
- data/lib/ndr_support/ourdate.rb +1 -5
- data/lib/ndr_support/string/clean_methodable.rb +4 -4
- data/lib/ndr_support/string/conversions.rb +1 -5
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +8 -6
- metadata +14 -76
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -1
- data/Gemfile +0 -4
- data/Guardfile +0 -24
- data/Rakefile +0 -12
- data/code_safety.yml +0 -290
- data/gemfiles/Gemfile.rails61 +0 -6
- data/gemfiles/Gemfile.rails70 +0 -6
- data/gemfiles/Gemfile.rails71 +0 -6
- data/test/array_test.rb +0 -20
- data/test/concerns/working_days_test.rb +0 -148
- data/test/date_and_time_extensions_test.rb +0 -56
- data/test/daterange_test.rb +0 -307
- data/test/hash_test.rb +0 -84
- data/test/integer/calculations_test.rb +0 -28
- data/test/integer/rounding_test.rb +0 -14
- data/test/integer/working_days_test.rb +0 -14
- data/test/nil_test.rb +0 -40
- data/test/obfuscator_test.rb +0 -26
- data/test/ourdate_test.rb +0 -26
- data/test/ourtime_test.rb +0 -45
- data/test/password_test.rb +0 -129
- data/test/regexp_range_test.rb +0 -136
- data/test/resources/filesystem_paths.yml +0 -37
- data/test/safe_file_test.rb +0 -670
- data/test/safe_path_test.rb +0 -168
- data/test/string/cleaning_test.rb +0 -247
- data/test/string/conversions_test.rb +0 -375
- data/test/test_helper.rb +0 -46
- data/test/threat_scanner_test.rb +0 -77
- data/test/utf8_encoding/control_characters_test.rb +0 -84
- data/test/utf8_encoding/force_binary_test.rb +0 -64
- data/test/utf8_encoding_test.rb +0 -170
- data/test/yaml/serialization_test.rb +0 -200
data/test/daterange_test.rb
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Daterange class
|
|
4
|
-
class DaterangeTest < Minitest::Test
|
|
5
|
-
def test_basic_creation
|
|
6
|
-
dr = Daterange.new
|
|
7
|
-
assert_equal '', dr.to_s
|
|
8
|
-
assert_nil dr.date1
|
|
9
|
-
assert_nil dr.date2
|
|
10
|
-
assert dr.empty?
|
|
11
|
-
assert dr.blank? # delegates to dr.empty?
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_creation_from_dates
|
|
15
|
-
d = Date.today
|
|
16
|
-
dr = Daterange.new d, d
|
|
17
|
-
assert_nil dr.source
|
|
18
|
-
refute_nil dr.date1
|
|
19
|
-
refute_nil dr.date2
|
|
20
|
-
refute dr.empty?
|
|
21
|
-
assert_equal d.to_s, dr.to_s # because just one day
|
|
22
|
-
# assert_match(/\d\d\.\d\d\.\d\d\d\d/, dr.to_s) # default format
|
|
23
|
-
# dr = Daterange.new d, d + 1
|
|
24
|
-
# assert_match(/\d\d\.\d\d\.\d\d\d\d to \d\d.\d\d.\d\d\d\d/, dr.to_s)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_false
|
|
28
|
-
d = Time.zone.today
|
|
29
|
-
dr = Daterange.new(d, d + 1)
|
|
30
|
-
dr2 = Daterange.new(d + 1, d)
|
|
31
|
-
assert_equal(dr.to_s, dr2.to_s)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def test_blank_does_not_trigger_error_and_returns_nil_in_dates
|
|
35
|
-
dr = Daterange.new('', do_not_sort_dates: true)
|
|
36
|
-
assert_nil dr.date1
|
|
37
|
-
assert_nil dr.date2
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_true
|
|
41
|
-
d = Time.zone.today
|
|
42
|
-
Daterange.new(d, d + 1, do_not_sort_dates: true)
|
|
43
|
-
assert_raises(Daterange::WrongDateOrderError) do
|
|
44
|
-
Daterange.new(d + 1, d, do_not_sort_dates: true)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_string_dates_in_reverse_order_with_do_not_sort_dates_false
|
|
49
|
-
dr = Daterange.new('01/01/2019 to 01/01/2020')
|
|
50
|
-
dr2 = Daterange.new('01/01/2020 to 01/01/2019')
|
|
51
|
-
assert_equal(dr.to_s, dr2.to_s)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_string_dates_in_reverse_order_with_do_not_sort_dates_true
|
|
55
|
-
Daterange.new('01/01/2019 to 01/01/2020', do_not_sort_dates: true)
|
|
56
|
-
assert_raises(Daterange::WrongDateOrderError) do
|
|
57
|
-
Daterange.new('01/01/2020 to 01/01/2019', do_not_sort_dates: true)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def test_illegal_strings
|
|
62
|
-
dr = Daterange.new('01/o1/2000')
|
|
63
|
-
assert_equal '', dr.to_s
|
|
64
|
-
assert_nil dr.date1
|
|
65
|
-
assert_nil dr.date2
|
|
66
|
-
refute dr.empty? # Illegal dates do not count as empty / blank,
|
|
67
|
-
refute_nil dr.source # but the illegal string is preserved
|
|
68
|
-
|
|
69
|
-
dr = Daterange.new('01_01_2000')
|
|
70
|
-
assert_equal '', dr.to_s
|
|
71
|
-
assert_nil dr.date1
|
|
72
|
-
assert_nil dr.date2
|
|
73
|
-
refute dr.empty? # Illegal dates do not count as empty / blank,
|
|
74
|
-
refute_nil dr.source # but the illegal string is preserved
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def test_out_of_range
|
|
78
|
-
dr = Daterange.new('31/12/1879')
|
|
79
|
-
assert_equal '', dr.to_s
|
|
80
|
-
assert_nil dr.date1
|
|
81
|
-
assert_nil dr.date2
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def test_year_attributes
|
|
85
|
-
dr = Daterange.new('2000')
|
|
86
|
-
assert_equal '2000', dr.source
|
|
87
|
-
assert_equal '2000', dr.to_s
|
|
88
|
-
assert_equal '01.01.2000', dr.date1.to_s
|
|
89
|
-
assert_equal '31.12.2000', dr.date2.to_s
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def test_year_range_attributes
|
|
93
|
-
dr = Daterange.new('1880 2020')
|
|
94
|
-
assert_equal '01.01.1880 to 31.12.2020', dr.to_s
|
|
95
|
-
assert_equal '01.01.1880', dr.date1.to_s
|
|
96
|
-
assert_equal '31.12.2020', dr.date2.to_s
|
|
97
|
-
assert_equal '1880 2020', dr.source
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def test_year_range_future
|
|
101
|
-
s = 2.years.from_now.strftime('%Y')
|
|
102
|
-
dr = Daterange.new(s)
|
|
103
|
-
assert_equal s, dr.to_s, "Daterange should support future years up to #{s}"
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def test_hyphen_month_input_style
|
|
107
|
-
dr = Daterange.new('2000-05')
|
|
108
|
-
assert_equal '05.2000', dr.to_s
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def test_dot_month_input_style
|
|
112
|
-
dr = Daterange.new('06.2000')
|
|
113
|
-
assert_equal '01.06.2000', dr.date1.to_s
|
|
114
|
-
assert_equal '30.06.2000', dr.date2.to_s
|
|
115
|
-
assert_equal '06.2000', dr.to_s
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_forwardslash_month_input_style
|
|
119
|
-
dr = Daterange.new('07/2000')
|
|
120
|
-
assert_equal '07.2000', dr.to_s
|
|
121
|
-
assert_equal '01.07.2000', dr.date1.to_s
|
|
122
|
-
assert_equal '31.07.2000', dr.date2.to_s
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def test_noseparator_month_input_style
|
|
126
|
-
dr = Daterange.new('082000')
|
|
127
|
-
assert_equal '08.2000', dr.to_s
|
|
128
|
-
assert_equal '01.08.2000', dr.date1.to_s
|
|
129
|
-
assert_equal '31.08.2000', dr.date2.to_s
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def test_date_to_date_input_style
|
|
133
|
-
dr = Daterange.new('01.05.2000 to 31.05.2000')
|
|
134
|
-
assert_equal '05.2000', dr.to_s
|
|
135
|
-
assert_equal '01.05.2000', dr.date1.to_s
|
|
136
|
-
assert_equal '31.05.2000', dr.date2.to_s
|
|
137
|
-
dr = Daterange.new('2000 TO 2001')
|
|
138
|
-
assert_equal '01.01.2000 to 31.12.2001', dr.to_s
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def test_hyphen_date_input_style
|
|
142
|
-
dr = Daterange.new('2000-09-12')
|
|
143
|
-
assert_equal '12.09.2000', dr.to_s
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def test_forwardslash_date_input_style
|
|
147
|
-
dr = Daterange.new('13/09/2000')
|
|
148
|
-
assert_equal '13.09.2000', dr.to_s
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_dot_date_input_style
|
|
152
|
-
dr = Daterange.new('14.09.2000')
|
|
153
|
-
assert_equal '14.09.2000', dr.to_s
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def test_noseparator_date_input_style
|
|
157
|
-
dr = Daterange.new('15092000')
|
|
158
|
-
assert_equal '15.09.2000', dr.to_s
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def test_spen_daylight_saving
|
|
162
|
-
dr = Daterange.new('03.2010') # Span time zones (daylight saving)
|
|
163
|
-
assert_equal '03.2010', dr.to_s # Ideally '03.2010'
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def test_date_with_daylight_saving
|
|
167
|
-
dr = Daterange.new(Date.new(2017, 9, 2)) # During daylight saving
|
|
168
|
-
assert_equal '02.09.2017', dr.to_s
|
|
169
|
-
default_timezone = if ActiveRecord.respond_to?(:default_timezone)
|
|
170
|
-
ActiveRecord.default_timezone
|
|
171
|
-
else
|
|
172
|
-
ActiveRecord::Base.default_timezone # Rails <= 6.1
|
|
173
|
-
end
|
|
174
|
-
return unless default_timezone == :local
|
|
175
|
-
|
|
176
|
-
assert_equal Date.new(2017, 9, 2).in_time_zone.utc_offset, dr.date1.utc_offset, 'Expect consistent offset'
|
|
177
|
-
assert_equal '2017-09-02'.thetime, dr.date1
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def test_verbose
|
|
181
|
-
dr = Daterange.new('01.03.2010')
|
|
182
|
-
assert_equal '01 March 2010', dr.verbose
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
def test_verbose_range
|
|
186
|
-
dr = Daterange.new('03.2010 to 2014')
|
|
187
|
-
assert_equal 'The period 01 March 2010 to 31 December 2014 inclusive (1767 days)', dr.verbose
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def test_year_intersection
|
|
191
|
-
dr1 = Daterange.new('2001')
|
|
192
|
-
dr2 = Daterange.new('2002')
|
|
193
|
-
refute dr1.intersects?(dr2)
|
|
194
|
-
refute dr2.intersects?(dr1)
|
|
195
|
-
|
|
196
|
-
dr1 = Daterange.new('2001')
|
|
197
|
-
dr2 = Daterange.new('2001')
|
|
198
|
-
assert dr1.intersects?(dr2)
|
|
199
|
-
assert dr2.intersects?(dr1)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def test_year_range_intersection
|
|
203
|
-
dr1 = Daterange.new('2001 to 2003')
|
|
204
|
-
dr2 = Daterange.new('2002 to 2004')
|
|
205
|
-
assert dr1.intersects?(dr2)
|
|
206
|
-
assert dr2.intersects?(dr1)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def test_subset_intersection
|
|
210
|
-
dr1 = Daterange.new('01.05.2000 to 31.05.2000')
|
|
211
|
-
dr2 = Daterange.new('02.05.2000 to 30.05.2000')
|
|
212
|
-
assert dr1.intersects?(dr2)
|
|
213
|
-
assert dr2.intersects?(dr1)
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
def test_smallest_inhabited_intersection
|
|
217
|
-
dr1 = Daterange.new('01.05.2000 to 31.05.2000')
|
|
218
|
-
dr2 = Daterange.new('01.04.2000 to 01.05.2000')
|
|
219
|
-
assert dr1.intersects?(dr2)
|
|
220
|
-
assert dr2.intersects?(dr1)
|
|
221
|
-
|
|
222
|
-
dr1 = Daterange.new('01.05.2000 to 31.05.2000')
|
|
223
|
-
dr2 = Daterange.new('31.05.2000 to 01.06.2000')
|
|
224
|
-
assert dr1.intersects?(dr2)
|
|
225
|
-
assert dr2.intersects?(dr1)
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
def test_disjointed_intersection
|
|
229
|
-
dr1 = Daterange.new('02.05.2000 to 31.05.2000')
|
|
230
|
-
dr2 = Daterange.new('01.04.2000 to 01.05.2000')
|
|
231
|
-
refute dr1.intersects?(dr2)
|
|
232
|
-
refute dr2.intersects?(dr1)
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
def test_real_empty_intersection
|
|
236
|
-
dr1 = Daterange.new
|
|
237
|
-
dr2 = Daterange.new('01.04.2000 to 01.05.2000')
|
|
238
|
-
refute dr1.intersects?(dr2)
|
|
239
|
-
refute dr2.intersects?(dr1)
|
|
240
|
-
|
|
241
|
-
dr1 = Daterange.new('01.04.2000 to 01.05.2000')
|
|
242
|
-
dr2 = Daterange.new
|
|
243
|
-
refute dr1.intersects?(dr2)
|
|
244
|
-
refute dr2.intersects?(dr1)
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
def test_empty_empty_intersection
|
|
248
|
-
dr1 = Daterange.new
|
|
249
|
-
dr2 = Daterange.new
|
|
250
|
-
refute dr1.intersects?(dr2)
|
|
251
|
-
refute dr2.intersects?(dr1)
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
def test_merge
|
|
255
|
-
dr = Daterange.merge('2001, 30.04.2005, 2003,,')
|
|
256
|
-
assert_equal '01.01.2001 to 30.04.2005', dr.to_s
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
def test_comparison
|
|
260
|
-
dr1 = Daterange.new('01.04.2000')
|
|
261
|
-
dr2 = Daterange.new('01.04.2000 to 01.04.2000')
|
|
262
|
-
assert_equal dr1, dr2
|
|
263
|
-
assert_equal dr1, dr1.to_s
|
|
264
|
-
refute_equal nil, dr1
|
|
265
|
-
refute_equal 0, dr1
|
|
266
|
-
refute_equal dr1, nil
|
|
267
|
-
refute_equal dr1, 0
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
def test_three_char_months
|
|
271
|
-
dr1 = Daterange.new('01-APR-2020')
|
|
272
|
-
assert_equal '01.04.2020', dr1.date1.to_s
|
|
273
|
-
assert_equal '01.04.2020', dr1.date2.to_s
|
|
274
|
-
|
|
275
|
-
dr2 = Daterange.new('APR-2020')
|
|
276
|
-
assert_equal '01.04.2020', dr2.date1.to_s
|
|
277
|
-
assert_equal '30.04.2020', dr2.date2.to_s
|
|
278
|
-
|
|
279
|
-
dr3 = Daterange.new('JAN-2020 TO apr-2020')
|
|
280
|
-
assert_equal '01.01.2020', dr3.date1.to_s
|
|
281
|
-
assert_equal '30.04.2020', dr3.date2.to_s
|
|
282
|
-
|
|
283
|
-
dr4 = Daterange.new('20-JAN-2020 TO 12-Apr-2020')
|
|
284
|
-
assert_equal '20.01.2020', dr4.date1.to_s
|
|
285
|
-
assert_equal '12.04.2020', dr4.date2.to_s
|
|
286
|
-
|
|
287
|
-
dr5 = Daterange.new('01-BOB-2020')
|
|
288
|
-
assert_nil dr5.date1
|
|
289
|
-
assert_nil dr5.date2
|
|
290
|
-
|
|
291
|
-
dr6 = Daterange.new('01/APR/2020')
|
|
292
|
-
assert_equal '01.04.2020', dr6.date1.to_s
|
|
293
|
-
assert_equal '01.04.2020', dr6.date2.to_s
|
|
294
|
-
|
|
295
|
-
dr7 = Daterange.new('APR/2020')
|
|
296
|
-
assert_equal '01.04.2020', dr7.date1.to_s
|
|
297
|
-
assert_equal '30.04.2020', dr7.date2.to_s
|
|
298
|
-
|
|
299
|
-
dr8 = Daterange.new('JAN/2020 TO apr.2020')
|
|
300
|
-
assert_equal '01.01.2020', dr8.date1.to_s
|
|
301
|
-
assert_equal '30.04.2020', dr8.date2.to_s
|
|
302
|
-
|
|
303
|
-
dr9 = Daterange.new('20.JAN.2020 TO 12/Apr/2020')
|
|
304
|
-
assert_equal '20.01.2020', dr9.date1.to_s
|
|
305
|
-
assert_equal '12.04.2020', dr9.date2.to_s
|
|
306
|
-
end
|
|
307
|
-
end
|
data/test/hash_test.rb
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Hash extension
|
|
4
|
-
class HashTest < Minitest::Test
|
|
5
|
-
test 'value_by_path' do
|
|
6
|
-
my_hash = { 'one' => '1', 'two' => { 'twopointone' => '2.1', 'twopointtwo' => '2.2' } }
|
|
7
|
-
assert_equal my_hash['one'], my_hash.value_by_path('one')
|
|
8
|
-
assert_equal my_hash['two']['twopointone'], my_hash.value_by_path('two', 'twopointone')
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
test 'intersection' do
|
|
12
|
-
my_hash = { :a => 1, :b => :two, 'c' => '3' }
|
|
13
|
-
assert_equal({ :a => 1, 'c' => '3' }, my_hash & [:a, :c])
|
|
14
|
-
assert_equal({ :b => :two }, my_hash & [:b])
|
|
15
|
-
assert_equal({}, my_hash & [:d, :e])
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
test 'rawtext_merge without prevent_overwrite' do
|
|
19
|
-
first_hash = { :a => 1, :b => :two, :rawtext => { 'x' => 'apples', 'y' => 'pears' } }
|
|
20
|
-
second_hash = { :b => 2, 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }
|
|
21
|
-
assert_equal(
|
|
22
|
-
{
|
|
23
|
-
:a => 1, :b => 2, 'c' => '3',
|
|
24
|
-
:rawtext => { 'x' => 'apples', 'y' => 'pears', 'z' => 'oranges' }
|
|
25
|
-
},
|
|
26
|
-
first_hash.rawtext_merge(second_hash, false)
|
|
27
|
-
)
|
|
28
|
-
# Ensure original hashes are preserved
|
|
29
|
-
assert_equal(
|
|
30
|
-
{ :a => 1, :b => :two, :rawtext => { 'x' => 'apples', 'y' => 'pears' } }, first_hash
|
|
31
|
-
)
|
|
32
|
-
assert_equal(
|
|
33
|
-
{ :b => 2, 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }, second_hash
|
|
34
|
-
)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
test 'rawtext_merge with prevent_overwrite on rawtext' do
|
|
38
|
-
first_hash = { :a => 1, :b => :two, :rawtext => { 'x' => 'apples', 'y' => 'pears' } }
|
|
39
|
-
second_hash = { 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }
|
|
40
|
-
assert_raises RuntimeError do
|
|
41
|
-
first_hash.rawtext_merge(second_hash, true)
|
|
42
|
-
end
|
|
43
|
-
# Ensure original hashes are preserved
|
|
44
|
-
assert_equal(
|
|
45
|
-
{ :a => 1, :b => :two, :rawtext => { 'x' => 'apples', 'y' => 'pears' } }, first_hash
|
|
46
|
-
)
|
|
47
|
-
assert_equal({ 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }, second_hash)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
test 'rawtext_merge with prevent_overwrite on non-rawtext' do
|
|
51
|
-
first_hash = { :a => 1, :b => :two, :rawtext => { 'x' => 'apples' } }
|
|
52
|
-
second_hash = { :b => 2, 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }
|
|
53
|
-
assert_raises RuntimeError do
|
|
54
|
-
first_hash.rawtext_merge(second_hash, true)
|
|
55
|
-
end
|
|
56
|
-
# Ensure original hashes are preserved
|
|
57
|
-
assert_equal({ :a => 1, :b => :two, :rawtext => { 'x' => 'apples' } }, first_hash)
|
|
58
|
-
assert_equal(
|
|
59
|
-
{ :b => 2, 'c' => '3', :rawtext => { 'y' => 'pears', 'z' => 'oranges' } }, second_hash
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
test 'rawtext_merge with one rawtext missing' do
|
|
64
|
-
first_hash = { :a => 1, :b => :two }
|
|
65
|
-
second_hash = { 'c' => '3', :rawtext => { 'x' => 'apples' } }
|
|
66
|
-
assert_equal({ :a => 1, :b => :two, 'c' => '3', :rawtext => { 'x' => 'apples' } },
|
|
67
|
-
first_hash.rawtext_merge(second_hash, false))
|
|
68
|
-
assert_equal({ :a => 1, :b => :two, 'c' => '3', :rawtext => { 'x' => 'apples' } },
|
|
69
|
-
second_hash.rawtext_merge(first_hash, false))
|
|
70
|
-
# Ensure original hashes are preserved
|
|
71
|
-
assert_equal({ :a => 1, :b => :two }, first_hash)
|
|
72
|
-
assert_equal({ 'c' => '3', :rawtext => { 'x' => 'apples' } }, second_hash)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
test 'rawtext_merge with rawtext missing' do
|
|
76
|
-
first_hash = { :a => 1, :b => :two }
|
|
77
|
-
second_hash = { 'c' => '3' }
|
|
78
|
-
assert_equal({ :a => 1, :b => :two, 'c' => '3', :rawtext => {} },
|
|
79
|
-
first_hash.rawtext_merge(second_hash, false))
|
|
80
|
-
# Ensure original hashes are preserved
|
|
81
|
-
assert_equal({ :a => 1, :b => :two }, first_hash)
|
|
82
|
-
assert_equal({ 'c' => '3' }, second_hash)
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Integer calculations extension
|
|
4
|
-
class Integer::CalculationsTest < Minitest::Test
|
|
5
|
-
test 'Integer should be extended with #factorial' do
|
|
6
|
-
assert 1.respond_to?(:factorial)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
test 'Integer#factorial should behave correctly' do
|
|
10
|
-
assert_equal 1, 0.factorial
|
|
11
|
-
assert_equal 24, 4.factorial
|
|
12
|
-
assert_raises(RuntimeError) { -1.factorial }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'Integer should be extended with #choose' do
|
|
16
|
-
assert 1.respond_to?(:choose)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
test 'Integer#choose should behave correctly' do
|
|
20
|
-
pascal_row = [1, 5, 10, 10, 5, 1]
|
|
21
|
-
pascal_row.each_with_index do |target, index|
|
|
22
|
-
assert_equal target, 5.choose(index)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
assert_raises(ArgumentError) { 10.choose(11) }
|
|
26
|
-
assert_raises(ArgumentError) { 10.choose(-1) }
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our rounding extension
|
|
4
|
-
class Integer::RoundingTest < Minitest::Test
|
|
5
|
-
def test_rounding
|
|
6
|
-
assert_equal 124_000, 123_221.round_up_to(3)
|
|
7
|
-
assert_equal 123_300, 123_221.round_up_to(4)
|
|
8
|
-
assert_equal 760, 758.round_up_to(2)
|
|
9
|
-
assert_equal 3453, 3452.round_up_to(4)
|
|
10
|
-
assert_nil 1.round_up_to(2)
|
|
11
|
-
refute_nil 10.round_up_to(2)
|
|
12
|
-
assert_nil 12.round_up_to(-45)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Integer working days extension
|
|
4
|
-
class Integer::WorkingDaysTest < Minitest::Test
|
|
5
|
-
test 'Integer should be extended with #working_days_since' do
|
|
6
|
-
assert 1.respond_to?(:working_days_since)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
test 'Integer#working_days_since should behave correctly' do
|
|
10
|
-
assert_equal Date.new(2019, 12, 23), 1.working_days_since(Date.new(2019, 12, 20))
|
|
11
|
-
assert_equal Date.new(2019, 12, 27), 3.working_days_since(Date.new(2019, 12, 20))
|
|
12
|
-
assert_equal Date.new(2019, 12, 30), 4.working_days_since(Date.new(2019, 12, 20))
|
|
13
|
-
end
|
|
14
|
-
end
|
data/test/nil_test.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Nil extension
|
|
4
|
-
class NilTest < Minitest::Test
|
|
5
|
-
test 'to_date' do
|
|
6
|
-
assert_nil nil.to_date
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
test 'titleize' do
|
|
10
|
-
assert_nil nil.titleize
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
test 'surnameize' do
|
|
14
|
-
assert_nil nil.surnameize
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
test 'postcodeize' do
|
|
18
|
-
assert_nil nil.postcodeize
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
test 'upcase' do
|
|
22
|
-
assert_nil nil.upcase
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test 'clean' do
|
|
26
|
-
assert_nil nil.clean(:tnmcategory)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
test 'squash' do
|
|
30
|
-
assert_nil nil.squash
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
test 'gsub' do
|
|
34
|
-
assert_equal '', nil.gsub(/.*/)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
test 'strip' do
|
|
38
|
-
assert_nil nil.strip
|
|
39
|
-
end
|
|
40
|
-
end
|
data/test/obfuscator_test.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# Tests obfuscation library
|
|
4
|
-
class ObfuscatorTest < Minitest::Test
|
|
5
|
-
test 'deterministic seed should give consistent obfuscation' do
|
|
6
|
-
seed1 = 1383023878118423080153274094615300156
|
|
7
|
-
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed1)
|
|
8
|
-
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed1),
|
|
9
|
-
'consistent re-obfuscation'
|
|
10
|
-
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('Jo Bloggs', seed1),
|
|
11
|
-
'case insensitive'
|
|
12
|
-
assert_equal 'CEZG PTIQQH', NdrSupport::Obfuscator.obfuscate('JOHN BRIGGS', seed1)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'different seeds should obfuscate differently' do
|
|
16
|
-
seed2 = 33333285080880515415022777373811069493
|
|
17
|
-
assert_equal 'VI RQICCZ', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed2)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test 'test seed setup' do
|
|
21
|
-
seed3 = 24978785977027615655244702873942606627
|
|
22
|
-
assert_equal '781 RACO RXHOOX', NdrSupport::Obfuscator.obfuscate('369 Some Street', seed3)
|
|
23
|
-
NdrSupport::Obfuscator.setup(seed3)
|
|
24
|
-
assert_equal '781 RACO RXHOOX', NdrSupport::Obfuscator.obfuscate('369 Some Street')
|
|
25
|
-
end
|
|
26
|
-
end
|
data/test/ourdate_test.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Ourdate class
|
|
4
|
-
class OurdateTest < Minitest::Test
|
|
5
|
-
def test_date_and_time
|
|
6
|
-
d = Ourdate.build_datetime(2003, 11, 30)
|
|
7
|
-
assert_equal '2003-11-30', d.to_iso
|
|
8
|
-
assert_equal '30.11.2003', d.to_formatted_s
|
|
9
|
-
assert_equal '30.11.2003', d.to_s
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_ourdate
|
|
13
|
-
# Creating an Ourdate from a String
|
|
14
|
-
od = Ourdate.new('01.02.2000')
|
|
15
|
-
assert_equal Date.new(2000, 2, 1).to_formatted_s(:ui), od.to_s
|
|
16
|
-
assert_kind_of Date, od.thedate
|
|
17
|
-
assert_equal '01.02.2000', od.thedate.to_s
|
|
18
|
-
# Creating an Ourdate from a Date
|
|
19
|
-
od = Ourdate.new(Date.new(2000, 3, 1))
|
|
20
|
-
assert_equal '01.03.2000', od.to_s
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def test_blank
|
|
24
|
-
assert Ourdate.new.blank? # delegates to empty?
|
|
25
|
-
end
|
|
26
|
-
end
|
data/test/ourtime_test.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our Ourtime class
|
|
4
|
-
class OurtimeTest < Minitest::Test
|
|
5
|
-
def test_initialize_with_local_format_string_gmt
|
|
6
|
-
# Creating an Ourtime from a local-format String (with seconds)
|
|
7
|
-
ot = Ourtime.new('01.02.1993 04:05:06')
|
|
8
|
-
assert_equal '1993-02-01 04:05:06', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
9
|
-
assert_kind_of Time, ot.thetime
|
|
10
|
-
assert_equal 0.hours, ot.thetime.gmt_offset
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_initialize_with_local_format_string_bst
|
|
14
|
-
# Creating an Ourtime from a local-format String (with seconds)
|
|
15
|
-
ot = Ourtime.new('01.08.1993 04:05:06')
|
|
16
|
-
assert_equal '1993-08-01 04:05:06', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
17
|
-
assert_kind_of Time, ot.thetime
|
|
18
|
-
assert_equal 1.hours, ot.thetime.gmt_offset
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_initialize_with_time
|
|
22
|
-
# Creating an Ourtime from a Time
|
|
23
|
-
ot = Ourtime.new(Time.mktime(1993, 2, 1, 4, 5))
|
|
24
|
-
assert_equal '01.02.1993 04:05', ot.to_s
|
|
25
|
-
assert_equal 0.hours, ot.thetime.gmt_offset
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def test_initialize_with_no_parameters
|
|
29
|
-
assert Ourtime.new.blank? # delegates to empty?
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_initialize_with_iso_string_bst
|
|
33
|
-
# Parsing an ISO datetime
|
|
34
|
-
ot = Ourtime.new('1993-05-05 06:07:08')
|
|
35
|
-
assert_equal '1993-05-05 06:07:08', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
36
|
-
assert_equal 1.hours, ot.thetime.gmt_offset
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def test_initialize_with_iso_string_gmt
|
|
40
|
-
# Parsing an ISO datetime
|
|
41
|
-
ot = Ourtime.new('1993-01-05 06:07:08')
|
|
42
|
-
assert_equal '1993-01-05 06:07:08', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
43
|
-
assert_equal 0.hours, ot.thetime.gmt_offset
|
|
44
|
-
end
|
|
45
|
-
end
|