za-id-validator 0.1.1 → 0.1.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -1,31 +1,35 @@
1
1
  module ZaIdValidator
2
2
 
3
3
  def valid_za_identity_number?(id)
4
- length_is_valid?(id) && id.to_s.chars.to_a.last.to_i == z(id)
4
+ id = id.to_s # force to a string
5
+ return false unless length_is_valid?(id)
6
+ id.chars.to_a.last.to_i == z(id)
5
7
  end
6
8
 
7
- def length_is_valid?(id)
8
- id =~ /^\d{13}$/
9
- end
9
+ private
10
10
 
11
- def a(id)
12
- id.chars.to_a.values_at(0,2,4,6,8,10).inject(0) { |sum, v| sum += v.to_i }
13
- end
11
+ def length_is_valid?(id)
12
+ id =~ /^\d{13}$/
13
+ end
14
14
 
15
- def b(id)
16
- id.chars.to_a.values_at(1,3,5,7,9,11).join
17
- end
15
+ def a(id)
16
+ id.chars.to_a.values_at(0,2,4,6,8,10).inject(0) { |sum, v| sum += v.to_i }
17
+ end
18
18
 
19
- def c(id)
20
- (b(id).to_i * 2).to_s.chars.to_a.inject(0) { |sum, v| sum += v.to_i }
21
- end
19
+ def b(id)
20
+ id.chars.to_a.values_at(1,3,5,7,9,11).join
21
+ end
22
22
 
23
- def d(id)
24
- a(id) + c(id)
25
- end
23
+ def c(id)
24
+ (b(id).to_i * 2).to_s.chars.to_a.inject(0) { |sum, v| sum += v.to_i }
25
+ end
26
26
 
27
- def z(id)
28
- 10 - (d(id) % 10)
29
- end
27
+ def d(id)
28
+ a(id) + c(id)
29
+ end
30
+
31
+ def z(id)
32
+ 10 - (d(id) % 10)
33
+ end
30
34
 
31
35
  end
@@ -11,6 +11,7 @@ class TestZaIdValidator < Test::Unit::TestCase
11
11
 
12
12
  setup do
13
13
  @valid = "8001015009087"
14
+ @valid_integer = 8001015009087
14
15
  end
15
16
 
16
17
  should "be the correct length" do
@@ -38,7 +39,15 @@ class TestZaIdValidator < Test::Unit::TestCase
38
39
  end
39
40
 
40
41
  should "be a valid ID number" do
41
- assert valid_za_identity_number?(@valid)
42
+ result = valid_za_identity_number?(@valid)
43
+ assert_not_nil(result)
44
+ assert(result)
45
+ end
46
+
47
+ should "be a valid ID number (when passed as an int)" do
48
+ result = valid_za_identity_number?(@valid_integer)
49
+ assert_not_nil(result)
50
+ assert(result)
42
51
  end
43
52
 
44
53
  end
@@ -50,7 +59,30 @@ class TestZaIdValidator < Test::Unit::TestCase
50
59
  end
51
60
 
52
61
  should "not be a valid ID number" do
53
- assert !valid_za_identity_number?(@invalid)
62
+ result = valid_za_identity_number?(@invalid)
63
+ assert_not_nil(result)
64
+ assert(!result)
65
+ end
66
+
67
+ end
68
+
69
+ context "an ID number that is too long" do
70
+
71
+ setup do
72
+ @too_long = "80010150090871"
73
+ @too_long_integer = 80010150090871
74
+ end
75
+
76
+ should "not be a valid ID number" do
77
+ result = valid_za_identity_number?(@too_long)
78
+ assert_not_nil(result)
79
+ assert(!result)
80
+ end
81
+
82
+ should "not be a valid ID number (when passed as an int)" do
83
+ result = valid_za_identity_number?(@too_long_integer)
84
+ assert_not_nil(result)
85
+ assert(!result)
54
86
  end
55
87
 
56
88
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{za-id-validator}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Craig Paterson"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: za-id-validator
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Craig Paterson