ndr_support 5.10.4 → 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 +7 -0
- data/LICENSE.txt +1 -1
- data/README.md +3 -3
- data/lib/ndr_support/concerns/working_days.rb +12 -1
- data/lib/ndr_support/string/clean_methodable.rb +4 -4
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +8 -6
- metadata +10 -73
- 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 -294
- data/gemfiles/Gemfile.rails70 +0 -6
- data/gemfiles/Gemfile.rails71 +0 -6
- data/gemfiles/Gemfile.rails72 +0 -6
- data/gemfiles/Gemfile.rails80 +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 -82
- data/test/daterange_test.rb +0 -303
- 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 -371
- data/test/test_helper.rb +0 -42
- 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
|
@@ -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
|
data/test/password_test.rb
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# Tests password generation and checking library
|
|
4
|
-
class PasswordTest < Minitest::Test
|
|
5
|
-
test 'checking length requirement' do
|
|
6
|
-
refute NdrSupport::Password.valid?('acegi')
|
|
7
|
-
assert NdrSupport::Password.valid?('acegik')
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test 'checking character uniqueness requirement' do
|
|
11
|
-
refute NdrSupport::Password.valid?('acegacegacegacegacegacegaceg')
|
|
12
|
-
assert NdrSupport::Password.valid?('acefhacefhacefhacefhacefhace')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'when checking, dictionary words are considered' do
|
|
16
|
-
refute NdrSupport::Password.valid?('google password')
|
|
17
|
-
assert NdrSupport::Password.valid?('google the password')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test 'when checking, custom dictionary words are considered' do
|
|
21
|
-
refute NdrSupport::Password.valid?('google passphrase', word_list: ['passphrase'])
|
|
22
|
-
assert NdrSupport::Password.valid?('google the passphrase', word_list: ['passphrase'])
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test 'when checking, custom dictionary words that are also sequences are not over-counted' do
|
|
26
|
-
refute NdrSupport::Password.valid?('hijkl a ', word_list: %w(hijkl hijklm))
|
|
27
|
-
refute NdrSupport::Password.valid?('hijklm a ', word_list: %w(hijkl hijklm))
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
test 'when checking, custom dictionary words substrings of others should not intefere' do
|
|
31
|
-
refute NdrSupport::Password.valid?('acegik a', word_list: %w(cegi acegik))
|
|
32
|
-
refute NdrSupport::Password.valid?('acegik a', word_list: %w(acegik cegi))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test 'checking blank input' do
|
|
36
|
-
refute NdrSupport::Password.valid?(nil)
|
|
37
|
-
refute NdrSupport::Password.valid?('')
|
|
38
|
-
refute NdrSupport::Password.valid?(' ')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
test 'checking with increasing sequences' do
|
|
42
|
-
refute NdrSupport::Password.valid?('12345678')
|
|
43
|
-
refute NdrSupport::Password.valid?('1234 5678')
|
|
44
|
-
refute NdrSupport::Password.valid?('456789')
|
|
45
|
-
refute NdrSupport::Password.valid?('456 789')
|
|
46
|
-
refute NdrSupport::Password.valid?('abcdefghijk')
|
|
47
|
-
refute NdrSupport::Password.valid?('abcde fghijk')
|
|
48
|
-
refute NdrSupport::Password.valid?('BCDEFGHIJKL')
|
|
49
|
-
refute NdrSupport::Password.valid?('BCDEFG HIJKL')
|
|
50
|
-
|
|
51
|
-
assert NdrSupport::Password.valid?('more 1234 5678')
|
|
52
|
-
assert NdrSupport::Password.valid?('1234 more 5678')
|
|
53
|
-
assert NdrSupport::Password.valid?('1234 5678 more')
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
test 'checking with decreasing sequences' do
|
|
57
|
-
refute NdrSupport::Password.valid?('87654321')
|
|
58
|
-
refute NdrSupport::Password.valid?('8765 4321')
|
|
59
|
-
refute NdrSupport::Password.valid?('987654')
|
|
60
|
-
refute NdrSupport::Password.valid?('987 654')
|
|
61
|
-
refute NdrSupport::Password.valid?('kjihgfedcba')
|
|
62
|
-
refute NdrSupport::Password.valid?('kjihg fedcba')
|
|
63
|
-
refute NdrSupport::Password.valid?('LKJIHGFEDCB')
|
|
64
|
-
refute NdrSupport::Password.valid?('LKJIHG FEDCB')
|
|
65
|
-
|
|
66
|
-
assert NdrSupport::Password.valid?('more 8765 4321')
|
|
67
|
-
assert NdrSupport::Password.valid?('8765 more 4321')
|
|
68
|
-
assert NdrSupport::Password.valid?('8765 4321 more')
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
test 'checking with increasing then decreasing sequences' do
|
|
72
|
-
refute NdrSupport::Password.valid?('123456787654321')
|
|
73
|
-
refute NdrSupport::Password.valid?('aBcDeFgFeDcBa')
|
|
74
|
-
|
|
75
|
-
assert NdrSupport::Password.valid?('something 123456787654321')
|
|
76
|
-
assert NdrSupport::Password.valid?('something aBcDeFgFeDcBa')
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
test 'checking with decreasing then increasing sequences' do
|
|
80
|
-
refute NdrSupport::Password.valid?('876543212345678')
|
|
81
|
-
refute NdrSupport::Password.valid?('gFeDcBaBcDeFg')
|
|
82
|
-
|
|
83
|
-
assert NdrSupport::Password.valid?('something 876543212345678')
|
|
84
|
-
assert NdrSupport::Password.valid?('something gFeDcBaBcDeFg')
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
test 'checking with repeating characters' do
|
|
88
|
-
refute NdrSupport::Password.valid?('happen')
|
|
89
|
-
assert NdrSupport::Password.valid?('happens')
|
|
90
|
-
assert NdrSupport::Password.valid?('hapqren')
|
|
91
|
-
assert NdrSupport::Password.valid?('hapqsen')
|
|
92
|
-
|
|
93
|
-
refute NdrSupport::Password.valid?('balloon')
|
|
94
|
-
refute NdrSupport::Password.valid?('ballllLLLllLLLllllooooOOooOOoooon')
|
|
95
|
-
assert NdrSupport::Password.valid?('baileon')
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
test 'generating' do
|
|
99
|
-
password = NdrSupport::Password.generate
|
|
100
|
-
|
|
101
|
-
assert NdrSupport::Password.valid?(password)
|
|
102
|
-
assert_equal 4, password.split(/\s/).length
|
|
103
|
-
|
|
104
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
test 'generating with custom length' do
|
|
108
|
-
password = NdrSupport::Password.generate(number_of_words: 6)
|
|
109
|
-
|
|
110
|
-
assert NdrSupport::Password.valid?(password)
|
|
111
|
-
assert_equal 6, password.split(/\s/).length
|
|
112
|
-
|
|
113
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
test 'generating with custom separator' do
|
|
117
|
-
password = NdrSupport::Password.generate(separator: '-')
|
|
118
|
-
|
|
119
|
-
assert NdrSupport::Password.valid?(password)
|
|
120
|
-
assert_equal 4, password.split(/-/).length
|
|
121
|
-
|
|
122
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
test 'generating unrealistically' do
|
|
126
|
-
exception = assert_raises(RuntimeError) { NdrSupport::Password.generate(number_of_words: 1) }
|
|
127
|
-
assert_match(/failed to generate/i, exception.message)
|
|
128
|
-
end
|
|
129
|
-
end
|
data/test/regexp_range_test.rb
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our RegexpRange class
|
|
4
|
-
class RegexpRangeTest < Minitest::Test
|
|
5
|
-
def setup
|
|
6
|
-
@lines = [
|
|
7
|
-
'0Lorem ipsum dolor sit amet',
|
|
8
|
-
'1consectetur adipisicing elit',
|
|
9
|
-
'2sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
|
|
10
|
-
'3Ut enim ad minim veniam, quis nostrud exercitation ullamco',
|
|
11
|
-
'4laboris nisi ut aliquip ex ea commodo consequat'
|
|
12
|
-
]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'to_yaml' do
|
|
16
|
-
regexp_range = RegexpRange.new(0, /^3Ut/)
|
|
17
|
-
|
|
18
|
-
# Don't test YAML serialisation directly, but make it can be loaded:
|
|
19
|
-
deserialized_regexp_range = YAML.safe_load(regexp_range.to_yaml,
|
|
20
|
-
permitted_classes: [RegexpRange, Regexp])
|
|
21
|
-
assert_instance_of RegexpRange, deserialized_regexp_range
|
|
22
|
-
assert_equal regexp_range.begin, deserialized_regexp_range.begin
|
|
23
|
-
assert_equal regexp_range.end, deserialized_regexp_range.end
|
|
24
|
-
assert_equal regexp_range.excl, deserialized_regexp_range.excl
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
test 'to_range with number and number' do
|
|
28
|
-
assert_equal Range.new(2, 3, true), RegexpRange.new(2, 3, true).to_range(@lines)
|
|
29
|
-
assert_equal Range.new(2, 3, false), RegexpRange.new(2, 3, false).to_range(@lines)
|
|
30
|
-
assert_equal Range.new(0, -1, true), RegexpRange.new(0, -1, true).to_range(@lines)
|
|
31
|
-
assert_equal Range.new(0, -1, false), RegexpRange.new(0, -1, false).to_range(@lines)
|
|
32
|
-
|
|
33
|
-
assert_equal @lines[Range.new(2, 3, true)],
|
|
34
|
-
@lines[RegexpRange.new(2, 3, true).to_range(@lines)]
|
|
35
|
-
assert_equal @lines[Range.new(2, 3, false)],
|
|
36
|
-
@lines[RegexpRange.new(2, 3, false).to_range(@lines)]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
test 'to_range with number and regexp' do
|
|
40
|
-
assert_equal Range.new(2, 3, true), RegexpRange.new(2, /^3Ut/, true).to_range(@lines)
|
|
41
|
-
assert_equal Range.new(2, 3, false), RegexpRange.new(2, /^3Ut/, false).to_range(@lines)
|
|
42
|
-
|
|
43
|
-
assert_equal @lines[Range.new(2, 3, true)],
|
|
44
|
-
@lines[RegexpRange.new(2, /^3Ut/, true).to_range(@lines)]
|
|
45
|
-
assert_equal @lines[Range.new(2, 3, false)],
|
|
46
|
-
@lines[RegexpRange.new(2, /^3Ut/, false).to_range(@lines)]
|
|
47
|
-
|
|
48
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
49
|
-
RegexpRange.new(2, /^NO_MATCH$/, true).to_range(@lines)
|
|
50
|
-
end
|
|
51
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
52
|
-
RegexpRange.new(2, /^NO_MATCH$/, false).to_range(@lines)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
test 'to_range with regexp and number' do
|
|
57
|
-
assert_equal Range.new(1, -1, true), RegexpRange.new(/^1consec/, -1, true).to_range(@lines)
|
|
58
|
-
assert_equal Range.new(1, -1, false), RegexpRange.new(/^1consec/, -1, false).to_range(@lines)
|
|
59
|
-
assert_equal Range.new(1, 5, true), RegexpRange.new(/^1consec/, 5, true).to_range(@lines)
|
|
60
|
-
assert_equal Range.new(1, 5, false), RegexpRange.new(/^1consec/, 5, false).to_range(@lines)
|
|
61
|
-
|
|
62
|
-
assert_equal @lines[Range.new(1, -1, true)],
|
|
63
|
-
@lines[RegexpRange.new(/^1consec/, -1, true).to_range(@lines)]
|
|
64
|
-
assert_equal @lines[Range.new(1, -1, false)],
|
|
65
|
-
@lines[RegexpRange.new(/^1consec/, -1, false).to_range(@lines)]
|
|
66
|
-
|
|
67
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
68
|
-
RegexpRange.new(/^NO_MATCH$/, 5, true).to_range(@lines)
|
|
69
|
-
end
|
|
70
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
71
|
-
RegexpRange.new(/^NO_MATCH$/, 5, false).to_range(@lines)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
test 'to_range with regexp and regexp' do
|
|
76
|
-
assert_equal Range.new(1, 3, true),
|
|
77
|
-
RegexpRange.new(/^1consec/, /^3Ut/, true).to_range(@lines)
|
|
78
|
-
assert_equal Range.new(1, 3, false),
|
|
79
|
-
RegexpRange.new(/^1consec/, /^3Ut/, false).to_range(@lines)
|
|
80
|
-
|
|
81
|
-
assert_equal @lines[Range.new(1, 3, true)],
|
|
82
|
-
@lines[RegexpRange.new(/^1consec/, /^3Ut/, true).to_range(@lines)]
|
|
83
|
-
assert_equal @lines[Range.new(1, 3, false)],
|
|
84
|
-
@lines[RegexpRange.new(/^1consec/, /^3Ut/, false).to_range(@lines)]
|
|
85
|
-
|
|
86
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
87
|
-
RegexpRange.new(/^NO_MATCH$/, /^NO_MATCH$/, true).to_range(@lines)
|
|
88
|
-
end
|
|
89
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
90
|
-
RegexpRange.new(/^NO_MATCH$/, /^NO_MATCH$/, false).to_range(@lines)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
test 'comparison to self' do
|
|
95
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
96
|
-
assert_equal rr1, rr1
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
test 'comparison to identical regexprange' do
|
|
100
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
101
|
-
rr2 = RegexpRange.new(/start/, /end/, false)
|
|
102
|
-
assert_equal rr1, rr2
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
test 'comparison to different regexprange' do
|
|
106
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
107
|
-
rr2 = RegexpRange.new(/start/, /end/, true)
|
|
108
|
-
refute_equal rr1, rr2
|
|
109
|
-
|
|
110
|
-
rr3 = RegexpRange.new(/start/, /end/, false)
|
|
111
|
-
rr4 = RegexpRange.new(/start/, /finish/, false)
|
|
112
|
-
refute_equal rr3, rr4
|
|
113
|
-
|
|
114
|
-
rr5 = RegexpRange.new(/start/, /end/, true)
|
|
115
|
-
rr6 = RegexpRange.new(/begin/, /end/, true)
|
|
116
|
-
refute_equal rr5, rr6
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
test 'hash key comparison' do
|
|
120
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
121
|
-
rr2 = RegexpRange.new(/start/, /end/, false)
|
|
122
|
-
rr3 = RegexpRange.new(/start/, /end/, true)
|
|
123
|
-
|
|
124
|
-
hash = Hash.new { |h, k| h[k] = 0 }
|
|
125
|
-
|
|
126
|
-
hash[rr1] += 1
|
|
127
|
-
hash[rr2] += 1
|
|
128
|
-
hash[rr3] += 1
|
|
129
|
-
|
|
130
|
-
assert_equal 2, hash.keys.length
|
|
131
|
-
|
|
132
|
-
assert_equal 2, hash[rr1]
|
|
133
|
-
assert_equal 2, hash[rr2]
|
|
134
|
-
assert_equal 1, hash[rr3]
|
|
135
|
-
end
|
|
136
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# This allows us different filesystem paths for different platforms
|
|
2
|
-
---
|
|
3
|
-
test_files: &test_files
|
|
4
|
-
root: <%= Dir.mktmpdir %>
|
|
5
|
-
|
|
6
|
-
? !ruby/regexp /.*/
|
|
7
|
-
:
|
|
8
|
-
dbs_outbox:
|
|
9
|
-
root: "/mounts/ron/dbs_outbox"
|
|
10
|
-
prms:
|
|
11
|
-
- r
|
|
12
|
-
- w
|
|
13
|
-
- x
|
|
14
|
-
broken_space:
|
|
15
|
-
root: "potato"
|
|
16
|
-
prms:
|
|
17
|
-
- r
|
|
18
|
-
- w
|
|
19
|
-
- x
|
|
20
|
-
test_space_r:
|
|
21
|
-
<<: *test_files
|
|
22
|
-
prms:
|
|
23
|
-
- r
|
|
24
|
-
test_space_w:
|
|
25
|
-
<<: *test_files
|
|
26
|
-
prms:
|
|
27
|
-
- w
|
|
28
|
-
test_space_rw:
|
|
29
|
-
<<: *test_files
|
|
30
|
-
prms:
|
|
31
|
-
- r
|
|
32
|
-
- w
|
|
33
|
-
permanent_test_files:
|
|
34
|
-
root: <%#= Rails.root.join("test","unit","files") %>
|
|
35
|
-
prms:
|
|
36
|
-
- r
|
|
37
|
-
- w
|