gpav 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gpav.rb +4 -1
- data/lib/validators/afm.rb +21 -17
- data/lib/validators/amka.rb +16 -12
- data/lib/validators/cheque.rb +36 -28
- data/lib/validators/iban.rb +26 -21
- data/test/test_afm.rb +27 -23
- data/test/test_amka.rb +27 -23
- data/test/test_cheque.rb +27 -23
- data/test/test_iban.rb +28 -24
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85c6b99fdbdc0ff596ef317711fe1ec4cf314ddc
|
4
|
+
data.tar.gz: 31c9e8ca90d8947920fd0d622c441b5dcd0cec7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc4fec3605ca9d36ec0dcd9d4f898166be01920f4c36aa06f26145097f81c1534bec1a946c568a90014eb15d72dd40ff277309941239153dfd18df1a3059866c
|
7
|
+
data.tar.gz: 69476c9be1f01d8582bbf9e79f9ba965d3b879c90feea090b95018d1aefc0c722e70d551d2ae9dd9517594ecd19993064ad9e305bedaeb5441ba65774cbdc195
|
data/lib/gpav.rb
CHANGED
data/lib/validators/afm.rb
CHANGED
@@ -1,25 +1,29 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Gpav
|
2
|
+
module Validators
|
3
|
+
class Afm
|
4
|
+
def self.valid?(afm) #9 chars, string
|
3
5
|
|
4
|
-
|
6
|
+
@afm = afm.to_s
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
return false if @afm.length != 9 # length == 9
|
9
|
+
return false if not @afm =~ /\A[0-9]{9}\Z/ # only digits
|
10
|
+
return false if @afm.to_i == 0 # do not allow all digits zero
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
y = @afm[-1].to_i # rest / ninth digit
|
13
|
+
s = 0 # runnning sum
|
14
|
+
pow2 = 2 # 2 power cache
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
7.downto(0) do |i|
|
17
|
+
s += pow2 * @afm[i].to_i
|
18
|
+
pow2 = pow2 * 2
|
19
|
+
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
+
s = s % 11
|
22
|
+
s = 0 if s == 10
|
21
23
|
|
22
|
-
|
24
|
+
return s == y
|
23
25
|
|
26
|
+
end
|
27
|
+
end
|
24
28
|
end
|
25
|
-
end
|
29
|
+
end
|
data/lib/validators/amka.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
|
1
|
+
module Gpav
|
2
|
+
module Validators
|
3
|
+
class Amka
|
2
4
|
|
3
|
-
|
5
|
+
def self.valid?(amka) # 11 char string
|
4
6
|
|
5
|
-
|
7
|
+
@amka = amka.to_s
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
return false unless @amka.length == 11
|
10
|
+
return false unless @amka =~ /\A[0-9]{11}\Z/
|
11
|
+
return false if @amka.to_i == 0 # do not allow all digits zero
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
@amka.each_char.with_index.inject(0) do |sum, (value, index)|
|
14
|
+
v = value.to_i
|
15
|
+
sum + v + (index.odd? ? (v - ((v>4) ? 9 : 0)) : 0)
|
16
|
+
end % 10 == 0
|
15
17
|
|
16
|
-
|
18
|
+
end
|
17
19
|
|
18
|
-
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/validators/cheque.rb
CHANGED
@@ -1,40 +1,48 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Gpav
|
2
|
+
module Validators
|
3
|
+
class Cheque
|
4
|
+
attr_reader :number
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
def initialize(number)
|
7
|
+
@number = number.to_s
|
8
|
+
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
10
|
+
def check_digit
|
11
|
+
i=9
|
12
|
+
sum = 0
|
13
|
+
@number.each_char { |c|
|
14
|
+
sum += c.to_i*i
|
15
|
+
i-=1
|
16
|
+
}
|
17
|
+
# return sum
|
18
|
+
y = sum % 11
|
19
|
+
result =
|
20
|
+
case y
|
21
|
+
when 1 then
|
22
|
+
0
|
23
|
+
when 0 then
|
24
|
+
1
|
25
|
+
else
|
26
|
+
11-y
|
27
|
+
end
|
22
28
|
end
|
23
|
-
end
|
24
29
|
|
25
|
-
|
26
|
-
|
27
|
-
|
30
|
+
def cheque_number
|
31
|
+
@number + '-' + check_digit.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.valid?(chequenumber)
|
28
35
|
|
29
|
-
|
36
|
+
@chequenumber =chequenumber.to_s
|
30
37
|
|
31
|
-
|
38
|
+
return false unless @chequenumber.length == 10
|
39
|
+
return false if not @chequenumber =~ /\A[0-9]{8}-[0-9]\Z/
|
32
40
|
|
33
|
-
|
34
|
-
return false if not @chequenumber =~ /\A[0-9]{8}-[0-9]\Z/
|
41
|
+
@chequenumber[-1].to_i == Cheque.new(@chequenumber[0..7]).check_digit
|
35
42
|
|
36
|
-
|
43
|
+
end
|
37
44
|
|
45
|
+
end
|
38
46
|
end
|
39
47
|
|
40
48
|
end
|
data/lib/validators/iban.rb
CHANGED
@@ -1,34 +1,39 @@
|
|
1
|
-
|
1
|
+
module Gpav
|
2
|
+
module Validators
|
3
|
+
class Iban
|
2
4
|
|
3
|
-
def self.valid?(iban)
|
4
5
|
|
5
|
-
|
6
|
+
def self.valid?(iban)
|
6
7
|
|
7
|
-
|
8
|
-
return false unless @iban =~ /\A[a-zA-Z]{2}[0-9]{25}\Z/
|
8
|
+
@iban = iban.to_s
|
9
9
|
|
10
|
+
return false unless @iban.length == 27
|
11
|
+
return false unless @iban =~ /\A[a-zA-Z]{2}[0-9]{25}\Z/
|
10
12
|
|
11
|
-
# rotate 4
|
12
|
-
#change letters to numbers: A=10 --> Z=35
|
13
|
-
#divide with 97 mod == 1
|
14
13
|
|
15
|
-
|
14
|
+
# rotate 4
|
15
|
+
#change letters to numbers: A=10 --> Z=35
|
16
|
+
#divide with 97 mod == 1
|
16
17
|
|
17
|
-
|
18
|
+
(@iban[4..27] + char_to_numbers(@iban[0]) + char_to_numbers(@iban[1]) + @iban[2..3]).to_i % 97 == 1
|
18
19
|
|
19
|
-
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
-
#
|
23
|
-
# A=10 F=15 K=20 P=25 U=30 Z=35
|
24
|
-
# B=11 G=16 L=21 Q=26 V=31
|
25
|
-
# C=12 H=17 M=22 R=27 W=32
|
26
|
-
# D=13 I=18 N=23 S=28 X=33
|
27
|
-
# E=14 J=19 O=24 T=29 Y=34
|
28
|
-
#
|
22
|
+
def self.char_to_numbers(char)
|
29
23
|
|
30
|
-
|
24
|
+
# iban characters to number transformation table
|
25
|
+
#
|
26
|
+
# A=10 F=15 K=20 P=25 U=30 Z=35
|
27
|
+
# B=11 G=16 L=21 Q=26 V=31
|
28
|
+
# C=12 H=17 M=22 R=27 W=32
|
29
|
+
# D=13 I=18 N=23 S=28 X=33
|
30
|
+
# E=14 J=19 O=24 T=29 Y=34
|
31
|
+
#
|
31
32
|
|
32
|
-
|
33
|
+
(char.upcase.ord - 'a'.upcase.ord + 10).to_s
|
33
34
|
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
34
39
|
end
|
data/test/test_afm.rb
CHANGED
@@ -1,41 +1,45 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/validators/afm'
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../lib/validators/afm'
|
3
|
+
|
4
|
+
class TestAfm < Minitest::Unit::TestCase
|
5
|
+
include Gpav::Validators
|
3
6
|
|
4
|
-
class TestAfm < Minitest::Unit::TestCase
|
5
7
|
def test_valid_afm_validation
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
valid_afm = ['101676480', '102676489', '103676487']
|
9
|
+
valid_afm.each do |a|
|
10
|
+
assert Afm.valid?(a), "ΑΦΜ verification failed: #{a}"
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_invalid_afm_validation
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
invalid_afm = ['101676481', '102676481', '103676481', '000000000']
|
16
|
+
invalid_afm.each do |a|
|
17
|
+
refute Afm.valid?(a), "Invalid ΑΦΜ wrong verification: #{a}"
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
def test_empty_afm
|
20
22
|
refute Afm.valid?(""), 'Invalid ΑΦΜ wrong verification: ""'
|
21
23
|
refute Afm.valid?(nil), 'Invalid ΑΦΜ wrong verification: nil'
|
22
24
|
end
|
25
|
+
|
23
26
|
def test_wrong_length_afm
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
refute Afm.valid?('01676480'), 'Invalid ΑΦΜ wrong verification: less numbers'
|
28
|
+
refute Afm.valid?('10167680'), 'Invalid ΑΦΜ wrong verification: less numbers'
|
29
|
+
refute Afm.valid?('1016763480'), 'Invalid ΑΦΜ wrong verification: more numbers'
|
30
|
+
refute Afm.valid?('1012676480'), 'Invalid ΑΦΜ wrong verification: more numbers'
|
31
|
+
refute Afm.valid?('1016762480'), 'Invalid ΑΦΜ wrong verification: more numbers'
|
32
|
+
refute Afm.valid?('1016764802'), 'Invalid ΑΦΜ wrong verification: more numbers'
|
33
|
+
refute Afm.valid?('1101676480'), 'Invalid ΑΦΜ wrong verification: more numbers'
|
34
|
+
refute Afm.valid?('101676480 '), 'Invalid ΑΦΜ wrong verification: with spaceses'
|
35
|
+
refute Afm.valid?(' 101676480'), 'Invalid ΑΦΜ wrong verification: with spaceses'
|
33
36
|
end
|
37
|
+
|
34
38
|
def test_includes_letters_afm
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
refute Afm.valid?('10d676480'), 'Invalid ΑΦΜ wrong verification: with letters'
|
40
|
+
refute Afm.valid?('101676s80'), 'Invalid ΑΦΜ wrong verification: with letters'
|
41
|
+
refute Afm.valid?('10167648s'), 'Invalid ΑΦΜ wrong verification: with letters'
|
42
|
+
refute Afm.valid?('a01676480'), 'Invalid ΑΦΜ wrong verification: with letters'
|
39
43
|
end
|
40
44
|
|
41
45
|
|
data/test/test_amka.rb
CHANGED
@@ -1,41 +1,45 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/validators/amka'
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../lib/validators/amka'
|
3
|
+
|
4
|
+
class TestAmka < Minitest::Unit::TestCase
|
5
|
+
include Gpav::Validators
|
3
6
|
|
4
|
-
class TestAmka < Minitest::Unit::TestCase
|
5
7
|
def test_valid_amka_validation
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
valid_amka = ['15067603256', '16057602159', '16067502233']
|
9
|
+
valid_amka.each do |a|
|
10
|
+
assert Amka.valid?(a), "ΑΜΚΑ verification failed: #{a}"
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_invalid_amka_validation
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
invalid_amka = ['15067603253', '16057602153', '16067502232', '00000000000']
|
16
|
+
invalid_amka.each do |a|
|
17
|
+
refute Amka.valid?(a), "Invalid ΑΜΚΑ wrong verification: #{a}"
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
def test_empty_amka
|
20
22
|
refute Amka.valid?(""), 'Invalid ΑΜΚΑ wrong verification: ""'
|
21
23
|
refute Amka.valid?(nil), 'Invalid ΑΜΚΑ wrong verification: nil'
|
22
24
|
end
|
25
|
+
|
23
26
|
def test_wrong_length_amka
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
refute Amka.valid?('1506760325'), 'Invalid ΑΜΚΑ wrong verification: less numbers'
|
28
|
+
refute Amka.valid?('5067603256'), 'Invalid ΑΜΚΑ wrong verification: less numbers'
|
29
|
+
refute Amka.valid?('115067603256'), 'Invalid ΑΜΚΑ wrong verification: more numbers'
|
30
|
+
refute Amka.valid?('125067603256'), 'Invalid ΑΜΚΑ wrong verification: more numbers'
|
31
|
+
refute Amka.valid?('153067603256'), 'Invalid ΑΜΚΑ wrong verification: more numbers'
|
32
|
+
refute Amka.valid?('150676032564'), 'Invalid ΑΜΚΑ wrong verification: more numbers'
|
33
|
+
refute Amka.valid?('150a67603256'), 'Invalid ΑΜΚΑ wrong verification: more numbers'
|
34
|
+
refute Amka.valid?('15067603256 '), 'Invalid ΑΜΚΑ wrong verification: with spaceses'
|
35
|
+
refute Amka.valid?(' 15067603256'), 'Invalid ΑΜΚΑ wrong verification: with spaceses'
|
33
36
|
end
|
37
|
+
|
34
38
|
def test_includes_letters_amka
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
refute Amka.valid?('15067a03256'), 'Invalid ΑΜΚΑ wrong verification: with letters'
|
40
|
+
refute Amka.valid?('1506760s356'), 'Invalid ΑΜΚΑ wrong verification: with letters'
|
41
|
+
refute Amka.valid?('1506760356s'), 'Invalid ΑΜΚΑ wrong verification: with letters'
|
42
|
+
refute Amka.valid?('s1506760356'), 'Invalid ΑΜΚΑ wrong verification: with letters'
|
39
43
|
end
|
40
44
|
|
41
45
|
|
data/test/test_cheque.rb
CHANGED
@@ -1,41 +1,45 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/validators/cheque'
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../lib/validators/cheque'
|
3
|
+
|
4
|
+
class TestCheque < Minitest::Unit::TestCase
|
5
|
+
include Gpav::Validators
|
3
6
|
|
4
|
-
class TestCheque < Minitest::Unit::TestCase
|
5
7
|
def test_valid_cheque_validation
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
valid_cheque = %w(72349701-0 72349702-8 72349703-6 72349704-4 72349705-2 72349706-1 72349707-9 72349708-7 72349709-5)
|
9
|
+
valid_cheque.each do |a|
|
10
|
+
assert Cheque.valid?(a), "Cheque verification failed: #{a}"
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_invalid_cheque_validation
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
invalid_cheque = %w(72349201-0 72339702-8 72349703-4 72345704-4 62349705-2 78349706-1 72349797-9 72049708-7 72049709-5 00000000-0)
|
16
|
+
invalid_cheque.each do |a|
|
17
|
+
refute Cheque.valid?(a), "Invalid Cheque wrong verification: #{a}"
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
def test_empty_cheque
|
20
22
|
refute Cheque.valid?(""), 'Invalid Cheque wrong verification: ""'
|
21
23
|
refute Cheque.valid?(nil), 'Invalid Cheque wrong verification: nil'
|
22
24
|
end
|
25
|
+
|
23
26
|
def test_wrong_length_cheque
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
refute Cheque.valid?('7234901-0'), 'Invalid Cheque wrong verification: less numbers'
|
28
|
+
refute Cheque.valid?('2349701-0'), 'Invalid Cheque wrong verification: less numbers'
|
29
|
+
refute Cheque.valid?('742349701-0'), 'Invalid Cheque wrong verification: more numbers'
|
30
|
+
refute Cheque.valid?('72349701-05'), 'Invalid Cheque wrong verification: more numbers'
|
31
|
+
refute Cheque.valid?('723497015-0'), 'Invalid Cheque wrong verification: more numbers'
|
32
|
+
refute Cheque.valid?('72349701--0'), 'Invalid Cheque wrong verification: more numbers'
|
33
|
+
refute Cheque.valid?('723497015-0'), 'Invalid Cheque wrong verification: more numbers'
|
34
|
+
refute Cheque.valid?('72349701-0 '), 'Invalid Cheque wrong verification: with spaceses'
|
35
|
+
refute Cheque.valid?(' 72349701-0'), 'Invalid Cheque wrong verification: with spaceses'
|
33
36
|
end
|
37
|
+
|
34
38
|
def test_includes_letters_cheque
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
refute Cheque.valid?('72349701+0'), 'Invalid Cheque wrong verification: with letters'
|
40
|
+
refute Cheque.valid?('72349701a0'), 'Invalid Cheque wrong verification: with letters'
|
41
|
+
refute Cheque.valid?('7234s701-0'), 'Invalid Cheque wrong verification: with letters'
|
42
|
+
refute Cheque.valid?('7a349701-0'), 'Invalid Cheque wrong verification: with letters'
|
39
43
|
end
|
40
44
|
|
41
45
|
|
data/test/test_iban.rb
CHANGED
@@ -1,42 +1,46 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/validators/iban'
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../lib/validators/iban'
|
3
|
+
|
4
|
+
class TestIban < Minitest::Unit::TestCase
|
5
|
+
include Gpav::Validators
|
3
6
|
|
4
|
-
class TestIban < Minitest::Unit::TestCase
|
5
7
|
def test_valid_iban_validation
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
valid_iban = %w(GR9401406010601002001000246 GR5401406010601002001000190 GR9101406010601002001000300 GR9001406010601002001000318 GR0701406010601002001001812)
|
9
|
+
valid_iban.each do |a|
|
10
|
+
assert Iban.valid?(a), "IBAN verification failed: #{a}"
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_invalid_iban_validation
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
invalid_iban = %w(DR9401406010601002001000246 GF5401406010601002001000190 GR9101406010631002001000300 GR9001406010601002001400318 GR0701406010601002001001814)
|
16
|
+
invalid_iban.each do |a|
|
17
|
+
refute Iban.valid?(a), "Invalid IBAN wrong verification: #{a}"
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
def test_empty_iban
|
20
22
|
refute Iban.valid?(""), 'Invalid IBAN wrong verification: ""'
|
21
23
|
refute Iban.valid?(nil), 'Invalid IBAN wrong verification: nil'
|
22
24
|
end
|
25
|
+
|
23
26
|
def test_wrong_length_iban
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
refute Iban.valid?('9401406010601002001000246'), 'Invalid IBAN wrong verification: less numbers'
|
28
|
+
refute Iban.valid?('R9401406010601002001000246'), 'Invalid IBAN wrong verification: less numbers'
|
29
|
+
refute Iban.valid?('GR940140601060100200100024'), 'Invalid IBAN wrong verification: less numbers'
|
30
|
+
refute Iban.valid?('G2R9401406010601002001000246'), 'Invalid IBAN wrong verification: more numbers'
|
31
|
+
refute Iban.valid?('GGR9401406010601002001000246'), 'Invalid IBAN wrong verification: more numbers'
|
32
|
+
refute Iban.valid?('1GR9401406010601002001000246'), 'Invalid IBAN wrong verification: more numbers'
|
33
|
+
refute Iban.valid?('GR94014060106010020021000246'), 'Invalid IBAN wrong verification: more numbers'
|
34
|
+
refute Iban.valid?('GR94014060106010020010002462'), 'Invalid IBAN wrong verification: more numbers'
|
35
|
+
refute Iban.valid?('GR9401406010601002001000246 '), 'Invalid IBAN wrong verification: with spaceses'
|
36
|
+
refute Iban.valid?(' GR9401406010601002001000246'), 'Invalid IBAN wrong verification: with spaceses'
|
34
37
|
end
|
38
|
+
|
35
39
|
def test_includes_letters_iban
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
refute Iban.valid?('GR94014060106010F2001000246'), 'Invalid IBAN wrong verification: with letters'
|
41
|
+
refute Iban.valid?('9401406010601002001000246GR'), 'Invalid IBAN wrong verification: with letters'
|
42
|
+
refute Iban.valid?('01406010601002001000246GR94'), 'Invalid IBAN wrong verification: with letters'
|
43
|
+
refute Iban.valid?('GRR901406010601002001000246'), 'Invalid IBAN wrong verification: with letters'
|
40
44
|
end
|
41
45
|
|
42
46
|
|