egn 1.3.2 → 1.3.3
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/README.md +17 -17
- data/Rakefile +2 -2
- data/egn.gemspec +13 -13
- data/lib/egn/egn.rb +9 -11
- data/lib/egn/generator.rb +9 -11
- data/lib/egn/parser.rb +1 -2
- data/lib/egn/util.rb +1 -2
- data/lib/egn/validator.rb +1 -2
- data/lib/egn/version.rb +1 -1
- data/lib/egn.rb +8 -10
- data/spec/egn/egn_spec.rb +20 -34
- data/spec/egn/generator_spec.rb +25 -35
- data/spec/egn/parser_spec.rb +3 -6
- data/spec/egn/validator_spec.rb +8 -14
- data/spec/spec_helper.rb +0 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a86c041349bc20394ea046da1a9d4a777dde322b
|
4
|
+
data.tar.gz: 69a89c71ad2e3d9df349b22af0c0fe6ca0867a71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c8f0cc69329cc40f4b0898953898554b5ac16614abee4563ffddd6fa6eb9a1e4948a0e72b9f1e944ea054afee2f8fea4c38a4e5165b6a8a487a3d3ef1c9d68
|
7
|
+
data.tar.gz: 210c8a9827e4bd59e8df12020283642f4d032e69eec08e9e9f0e9df7735fa7ed727024cae1996832fe2d08e726f4d747d598e099098ad6cae25df3d2604ca553
|
data/README.md
CHANGED
@@ -23,51 +23,51 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
## Usage
|
25
25
|
|
26
|
-
require
|
26
|
+
require 'egn'
|
27
27
|
|
28
28
|
# Quickly generate a random number
|
29
29
|
Egn.generate
|
30
|
-
|
30
|
+
=> '6101047500'
|
31
31
|
|
32
32
|
# Validate a given number
|
33
|
-
Egn.validate(
|
34
|
-
|
33
|
+
Egn.validate('6101047500')
|
34
|
+
=> true
|
35
35
|
|
36
36
|
# Create an new EGN object with a random number
|
37
37
|
egn = Egn::Egn.new
|
38
|
-
|
38
|
+
=> 9212094524
|
39
39
|
|
40
40
|
# OR generate EGN for a specific date
|
41
|
-
egn = Egn::Egn.new(
|
42
|
-
|
41
|
+
egn = Egn::Egn.new(year: 1945, month: 5, day: 8)
|
42
|
+
=> 4505085346
|
43
43
|
|
44
44
|
# OR parse an existing one
|
45
|
-
egn = Egn.parse(
|
46
|
-
|
45
|
+
egn = Egn.parse('6101047500')
|
46
|
+
=> 6101047500
|
47
47
|
|
48
48
|
egn.birth_date
|
49
|
-
|
49
|
+
=> #<Date: 1961-01-04 ((2437304j,0s,0n),+0s,2299161j)>
|
50
50
|
|
51
51
|
egn.year
|
52
|
-
|
52
|
+
=> 1961
|
53
53
|
|
54
54
|
egn.month
|
55
|
-
|
55
|
+
=> 1
|
56
56
|
|
57
57
|
egn.day
|
58
|
-
|
58
|
+
=> 10
|
59
59
|
|
60
60
|
egn.gender # egn.sex can also be used
|
61
|
-
|
61
|
+
=> :male
|
62
62
|
|
63
63
|
egn.gender(format: :char)
|
64
|
-
|
64
|
+
=> 'm'
|
65
65
|
|
66
66
|
egn.gender(format: :number)
|
67
|
-
|
67
|
+
=> 1
|
68
68
|
|
69
69
|
egn.valid?
|
70
|
-
|
70
|
+
=> true
|
71
71
|
|
72
72
|
## Contributing
|
73
73
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
2
|
|
3
3
|
require 'rake'
|
4
4
|
|
5
5
|
require 'coveralls/rake/task'
|
6
6
|
Coveralls::RakeTask.new
|
7
|
-
task :
|
7
|
+
task test_with_coveralls: [:spec, :features, 'coveralls:push']
|
8
8
|
|
9
9
|
require 'rspec/core'
|
10
10
|
require 'rspec/core/rake_task'
|
data/egn.gemspec
CHANGED
@@ -4,22 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'egn/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'egn'
|
8
8
|
spec.version = Egn::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['gmitrev']
|
10
|
+
spec.email = ['gvmitrev@gmail.com']
|
11
|
+
spec.description = 'Generator, validator and info parser for EGN numbers'
|
12
|
+
spec.summary = 'An easy way to generate and validate EGN numbers and parse them for useful information'
|
13
|
+
spec.homepage = 'https://github.com/gmitrev/egn'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split(
|
16
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 2.6'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
25
25
|
end
|
data/lib/egn/egn.rb
CHANGED
@@ -3,12 +3,11 @@ module Egn
|
|
3
3
|
class Egn
|
4
4
|
attr_reader :number, :birth_date
|
5
5
|
|
6
|
-
# Creates a new EGN object. Has different effects depending on the
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
def initialize(args=nil)
|
11
|
-
|
6
|
+
# Creates a new EGN object. Has different effects depending on the arguments:
|
7
|
+
# when no arguments are given, it generates a new random EGN;
|
8
|
+
# when a String is given, it is parsed as an EGN;
|
9
|
+
# when a hash is given, a new EGN is generated with the provided options.
|
10
|
+
def initialize(args = nil)
|
12
11
|
if args.nil?
|
13
12
|
@number = Generator.generate
|
14
13
|
else
|
@@ -17,9 +16,9 @@ module Egn
|
|
17
16
|
@number = Generator.generate(args)
|
18
17
|
when String
|
19
18
|
@number = args
|
20
|
-
raise ArgumentError,
|
19
|
+
raise ArgumentError, 'Invalid EGN' unless self.valid?
|
21
20
|
else
|
22
|
-
raise ArgumentError,
|
21
|
+
raise ArgumentError, 'Egn#new should be called either with an EGN or with an options hash'
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
@@ -47,12 +46,12 @@ module Egn
|
|
47
46
|
# default: :male | :female
|
48
47
|
# number: 1 | 2
|
49
48
|
# char: 'm' | 'f'
|
50
|
-
def sex(options={})
|
49
|
+
def sex(options = {})
|
51
50
|
options = {
|
52
51
|
format: :default
|
53
52
|
}.merge(options)
|
54
53
|
|
55
|
-
male = number[8,1].to_i.even?
|
54
|
+
male = number[8, 1].to_i.even?
|
56
55
|
|
57
56
|
case options[:format]
|
58
57
|
when :default
|
@@ -77,6 +76,5 @@ module Egn
|
|
77
76
|
|
78
77
|
@birth_date = info.date
|
79
78
|
end
|
80
|
-
|
81
79
|
end
|
82
80
|
end
|
data/lib/egn/generator.rb
CHANGED
@@ -3,18 +3,18 @@ module Egn
|
|
3
3
|
class Generator
|
4
4
|
attr_reader :options
|
5
5
|
|
6
|
-
#
|
7
|
-
def self.generate(options={})
|
6
|
+
# Convenience method
|
7
|
+
def self.generate(options = {})
|
8
8
|
Generator.new(options).generate
|
9
9
|
end
|
10
10
|
|
11
|
-
def initialize(options={})
|
11
|
+
def initialize(options = {})
|
12
12
|
validate!(options)
|
13
13
|
set_defaults!(options)
|
14
14
|
process!
|
15
15
|
end
|
16
16
|
|
17
|
-
# The generated EGN will be completely random if no
|
17
|
+
# The generated EGN will be completely random if no options are given.
|
18
18
|
# options is a hash that may have the following keys: :year, :month, :day, :gender
|
19
19
|
def generate
|
20
20
|
egn = format(options[:year]) +
|
@@ -33,19 +33,18 @@ module Egn
|
|
33
33
|
until Date.valid_date?(@options[:year].to_i, @options[:month].to_i, @options[:day].to_i)
|
34
34
|
@options = defaults.merge(options)
|
35
35
|
end
|
36
|
-
|
37
36
|
end
|
38
37
|
|
39
|
-
# Little helper
|
40
|
-
def format(val, pre=2)
|
38
|
+
# Little helper that prefixes strings with 0s
|
39
|
+
def format(val, pre = 2)
|
41
40
|
val.to_s.rjust(pre, '0')
|
42
41
|
end
|
43
42
|
|
44
43
|
# Check if the options contain a date that is valid and be turned into an EGN
|
45
44
|
def validate!(options)
|
46
|
-
raise ArgumentError,
|
47
|
-
raise ArgumentError,
|
48
|
-
raise ArgumentError,
|
45
|
+
raise ArgumentError, 'Year out of bounds' if options[:year] && !(1800..2099).include?(options[:year])
|
46
|
+
raise ArgumentError, 'Month out of bounds' if options[:month] && !(1..12).include?(options[:month])
|
47
|
+
raise ArgumentError, 'Day out of bounds' if options[:day] && !(1..31).include?(options[:day])
|
49
48
|
raise ArgumentError, "Gender should be one of #{genders}" if options[:gender] && !genders.include?(options[:gender])
|
50
49
|
end
|
51
50
|
|
@@ -100,6 +99,5 @@ module Egn
|
|
100
99
|
def genders
|
101
100
|
[:male, :female]
|
102
101
|
end
|
103
|
-
|
104
102
|
end
|
105
103
|
end
|
data/lib/egn/parser.rb
CHANGED
@@ -5,7 +5,7 @@ module Egn
|
|
5
5
|
# Parses the given EGN and returns all information that can be
|
6
6
|
# extracted from it: date, sex and region
|
7
7
|
def initialize(egn)
|
8
|
-
raise ArgumentError,
|
8
|
+
raise ArgumentError, 'Invalid EGN' unless Validator.validate(egn)
|
9
9
|
|
10
10
|
# Extract the correct date
|
11
11
|
year, month, day = egn.scan(/.{1,2}/).map(&:to_i)
|
@@ -13,6 +13,5 @@ module Egn
|
|
13
13
|
|
14
14
|
@date = Date.new(year.to_i, month, day)
|
15
15
|
end
|
16
|
-
|
17
16
|
end
|
18
17
|
end
|
data/lib/egn/util.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Contains some utility methods that are used by the other classes
|
2
2
|
module Egn
|
3
3
|
module Util
|
4
|
-
WEIGHTS = [2,4,8,5,10,9,7,3,6]
|
4
|
+
WEIGHTS = [2, 4, 8, 5, 10, 9, 7, 3, 6]
|
5
5
|
|
6
6
|
# The EGN can have three different formats depending on the century. It can
|
7
7
|
# be determined by examining the month.
|
@@ -36,6 +36,5 @@ module Egn
|
|
36
36
|
def self.time_rand(from = 0.0, to = Time.now)
|
37
37
|
Time.at(from + rand * (to.to_f - from.to_f))
|
38
38
|
end
|
39
|
-
|
40
39
|
end
|
41
40
|
end
|
data/lib/egn/validator.rb
CHANGED
@@ -19,7 +19,7 @@ module Egn
|
|
19
19
|
return false unless Date.valid_date?(@year, @month, @day)
|
20
20
|
|
21
21
|
# Calculate the checksum and check if the given one is correct
|
22
|
-
checksum = Util.egn_checksum(@egn[0,9])
|
22
|
+
checksum = Util.egn_checksum(@egn[0, 9])
|
23
23
|
checksum == @egn[9].to_i
|
24
24
|
end
|
25
25
|
|
@@ -30,6 +30,5 @@ module Egn
|
|
30
30
|
year, month = Util.determine_date(year, month)
|
31
31
|
[year, month, day]
|
32
32
|
end
|
33
|
-
|
34
33
|
end
|
35
34
|
end
|
data/lib/egn/version.rb
CHANGED
data/lib/egn.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require 'date'
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
3
|
+
require 'egn/egn'
|
4
|
+
require 'egn/parser'
|
5
|
+
require 'egn/validator'
|
6
|
+
require 'egn/generator'
|
7
|
+
require 'egn/version'
|
8
|
+
require 'egn/util'
|
9
9
|
|
10
10
|
module Egn
|
11
|
-
|
12
11
|
# Quick generate: returns a new number
|
13
|
-
def self.generate(options={})
|
12
|
+
def self.generate(options = {})
|
14
13
|
Generator.generate(options)
|
15
14
|
end
|
16
15
|
|
@@ -23,5 +22,4 @@ module Egn
|
|
23
22
|
def self.parse(egn)
|
24
23
|
Egn.new(egn)
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
data/spec/egn/egn_spec.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe 'Egn' do
|
5
4
|
describe '.initialize' do
|
6
|
-
|
7
|
-
context "invoked with no args" do
|
8
|
-
|
5
|
+
context 'invoked with no args' do
|
9
6
|
it 'generates a valid number' do
|
10
7
|
egn = Egn::Egn.new
|
11
8
|
|
@@ -19,34 +16,29 @@ describe "Egn" do
|
|
19
16
|
expect(egn1.number).not_to eq egn2.number
|
20
17
|
end
|
21
18
|
|
22
|
-
it
|
23
|
-
|
24
|
-
Egn::Generator.should_receive(:generate).and_return "6101047500"
|
19
|
+
it 'delegates the creation to Generators::Egn' do
|
20
|
+
Egn::Generator.should_receive(:generate).and_return '6101047500'
|
25
21
|
|
26
22
|
Egn::Egn.new
|
27
23
|
end
|
28
|
-
|
29
24
|
end
|
30
25
|
|
31
|
-
context
|
32
|
-
|
33
|
-
it "returns a new Egn object if the provided EGN is valid" do
|
26
|
+
context 'invoked with an EGN ' do
|
27
|
+
it 'returns a new Egn object if the provided EGN is valid' do
|
34
28
|
egn = Egn::Egn.new('6101047500')
|
35
29
|
|
36
30
|
expect(egn).to be_valid
|
37
31
|
end
|
38
32
|
|
39
|
-
it
|
40
|
-
expect
|
33
|
+
it 'raises an ArgumentError if the provided EGN is not valid' do
|
34
|
+
expect do
|
41
35
|
Egn::Egn.new("I'm invalid")
|
42
|
-
|
36
|
+
end.to raise_error ArgumentError
|
43
37
|
end
|
44
|
-
|
45
38
|
end
|
46
39
|
|
47
|
-
context
|
48
|
-
|
49
|
-
it "passes the options to the #generate method" do
|
40
|
+
context 'invoked with an options hash' do
|
41
|
+
it 'passes the options to the #generate method' do
|
50
42
|
options = {
|
51
43
|
year: 1960,
|
52
44
|
month: 12
|
@@ -56,19 +48,18 @@ describe "Egn" do
|
|
56
48
|
|
57
49
|
Egn::Egn.new(options)
|
58
50
|
end
|
59
|
-
|
60
51
|
end
|
61
52
|
|
62
|
-
context
|
53
|
+
context 'invoked with something else' do
|
63
54
|
it 'raises an ArgumentError' do
|
64
|
-
expect
|
65
|
-
Egn::Egn.new([1,2,'hi'])
|
66
|
-
|
55
|
+
expect do
|
56
|
+
Egn::Egn.new([1, 2, 'hi'])
|
57
|
+
end.to raise_error ArgumentError
|
67
58
|
end
|
68
59
|
end
|
69
60
|
end
|
70
61
|
|
71
|
-
describe
|
62
|
+
describe 'valid?' do
|
72
63
|
it 'delegates the validation to Validators::Egn' do
|
73
64
|
egn = Egn::Egn.new
|
74
65
|
Egn::Validator.should_receive(:validate).with(egn.number)
|
@@ -76,13 +67,11 @@ describe "Egn" do
|
|
76
67
|
end
|
77
68
|
end
|
78
69
|
|
79
|
-
|
80
70
|
describe 'validating'
|
81
71
|
|
82
72
|
describe 'parsing'
|
83
73
|
|
84
74
|
describe 'sex' do
|
85
|
-
|
86
75
|
# Female
|
87
76
|
%w(4702054631 5202079211 8012304154 9506062719 9308110830).each do |female_egn|
|
88
77
|
it "works for female with egn #{female_egn}" do
|
@@ -100,22 +89,19 @@ describe "Egn" do
|
|
100
89
|
end
|
101
90
|
|
102
91
|
it 'allows an option to be passed that changes the output to numbers' do
|
103
|
-
male = Egn.parse(
|
104
|
-
female = Egn.parse(
|
92
|
+
male = Egn.parse('0612318303')
|
93
|
+
female = Egn.parse('5202079211')
|
105
94
|
|
106
95
|
expect(male.sex(format: :number)).to eq 1
|
107
96
|
expect(female.sex(format: :number)).to eq 2
|
108
97
|
end
|
109
98
|
|
110
99
|
it 'allows an option to be passed that changes the output to a single char' do
|
111
|
-
male = Egn.parse(
|
112
|
-
female = Egn.parse(
|
100
|
+
male = Egn.parse('0612318303')
|
101
|
+
female = Egn.parse('5202079211')
|
113
102
|
|
114
103
|
expect(male.sex(format: :char)).to eq 'm'
|
115
104
|
expect(female.sex(format: :char)).to eq 'f'
|
116
105
|
end
|
117
|
-
|
118
106
|
end
|
119
|
-
|
120
107
|
end
|
121
|
-
|
data/spec/egn/generator_spec.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Egn::Generator do
|
4
|
-
|
5
|
-
|
6
|
-
context "invoked with no arguments" do
|
7
|
-
|
4
|
+
describe '#generate' do
|
5
|
+
context 'invoked with no arguments' do
|
8
6
|
it 'generates a valid number' do
|
9
7
|
egn = Egn::Generator.generate
|
10
8
|
|
@@ -17,32 +15,31 @@ describe Egn::Generator do
|
|
17
15
|
|
18
16
|
expect(egn1).not_to eq egn2
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
19
|
|
23
|
-
context
|
24
|
-
it
|
20
|
+
context 'invoked with arguments' do
|
21
|
+
it 'generates a new EGN considering the given options' do
|
25
22
|
number = Egn::Generator.generate(year: 1990, month: 12, day: 30, gender: :male)
|
26
23
|
egn = Egn::Egn.new(number)
|
27
24
|
|
28
25
|
expect(egn).to be_valid
|
29
26
|
end
|
30
27
|
|
31
|
-
it
|
28
|
+
it 'generates a new EGN with the given year' do
|
32
29
|
number = Egn::Generator.generate(year: 1990)
|
33
30
|
egn = Egn::Egn.new(number)
|
34
31
|
|
35
32
|
expect(egn.year).to eq(1990)
|
36
33
|
end
|
37
34
|
|
38
|
-
it
|
35
|
+
it 'generates a new EGN with the given month' do
|
39
36
|
number = Egn::Generator.generate(month: 6)
|
40
37
|
egn = Egn::Egn.new(number)
|
41
38
|
|
42
39
|
expect(egn.month).to eq(6)
|
43
40
|
end
|
44
41
|
|
45
|
-
it
|
42
|
+
it 'generates a new EGN with the given day' do
|
46
43
|
number = Egn::Generator.generate(day: 29)
|
47
44
|
egn = Egn::Egn.new(number)
|
48
45
|
|
@@ -50,66 +47,59 @@ describe Egn::Generator do
|
|
50
47
|
end
|
51
48
|
|
52
49
|
it "doesn't generate invalid EGN's for day 29 (in case of february)" do
|
53
|
-
Array.new(10_000) { |
|
50
|
+
Array.new(10_000) { |_i| Egn.generate(day: 29) }.each do |egn|
|
54
51
|
result = Egn::Validator.validate(egn)
|
55
52
|
expect(result).to be_true, "Failed for #{egn}"
|
56
53
|
end
|
57
|
-
|
58
54
|
end
|
59
55
|
|
60
|
-
it
|
56
|
+
it 'generates female EGNs' do
|
61
57
|
number = Egn::Generator.generate(gender: :female)
|
62
58
|
egn = Egn::Egn.new(number)
|
63
59
|
|
64
60
|
expect(egn.gender).to eq(:female)
|
65
61
|
end
|
66
62
|
|
67
|
-
it
|
63
|
+
it 'generates male EGNs' do
|
68
64
|
number = Egn::Generator.generate(gender: :male)
|
69
65
|
egn = Egn::Egn.new(number)
|
70
66
|
|
71
67
|
expect(egn.gender).to eq(:male)
|
72
68
|
end
|
73
69
|
|
74
|
-
it
|
75
|
-
|
76
|
-
options = {year: 1960, month: 6, day: 3, gender: :male, region: 333}
|
70
|
+
it 'validates the options' do
|
71
|
+
options = { year: 1960, month: 6, day: 3, gender: :male, region: 333 }
|
77
72
|
|
78
73
|
Egn::Generator.any_instance.should_receive(:validate!)
|
79
74
|
|
80
75
|
Egn::Generator.generate(options)
|
81
76
|
end
|
82
|
-
|
83
77
|
end
|
84
78
|
end
|
85
79
|
|
86
|
-
describe
|
87
|
-
|
88
|
-
|
89
|
-
expect{
|
80
|
+
describe '#validate!' do
|
81
|
+
it 'raises an exception if invalid year is given' do
|
82
|
+
expect do
|
90
83
|
Egn::Generator.generate(year: 1500)
|
91
|
-
|
84
|
+
end.to raise_error ArgumentError
|
92
85
|
end
|
93
86
|
|
94
|
-
it
|
95
|
-
expect
|
87
|
+
it 'raises an exception if invalid month is given' do
|
88
|
+
expect do
|
96
89
|
Egn::Generator.generate(month: 15)
|
97
|
-
|
90
|
+
end.to raise_error ArgumentError
|
98
91
|
end
|
99
92
|
|
100
|
-
it
|
101
|
-
expect
|
93
|
+
it 'raises an exception if invalid day is given' do
|
94
|
+
expect do
|
102
95
|
Egn::Generator.generate(day: 33)
|
103
|
-
|
96
|
+
end.to raise_error ArgumentError
|
104
97
|
end
|
105
98
|
|
106
|
-
it
|
107
|
-
expect
|
99
|
+
it 'raises an exception if invalid gender is given' do
|
100
|
+
expect do
|
108
101
|
Egn::Generator.generate(gender: :none)
|
109
|
-
|
102
|
+
end.to raise_error ArgumentError
|
110
103
|
end
|
111
|
-
|
112
104
|
end
|
113
|
-
|
114
105
|
end
|
115
|
-
|
data/spec/egn/parser_spec.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Egn::Parser do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
expect{ Egn::Parser.new("12345678") }.to raise_error ArgumentError
|
4
|
+
describe '#initialize' do
|
5
|
+
it 'raises an exception if the argument is invalid' do
|
6
|
+
expect { Egn::Parser.new('12345678') }.to raise_error ArgumentError
|
8
7
|
end
|
9
8
|
end
|
10
|
-
|
11
9
|
end
|
12
|
-
|
data/spec/egn/validator_spec.rb
CHANGED
@@ -1,27 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Egn::Validator do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
expect(Egn::Validator.validate("123456789")).to be_false
|
9
|
-
expect(Egn::Validator.validate("12345678901")).to be_false
|
4
|
+
describe '#validate' do
|
5
|
+
it 'fails for strings with incorrect size' do
|
6
|
+
expect(Egn::Validator.validate('123456789')).to be_false
|
7
|
+
expect(Egn::Validator.validate('12345678901')).to be_false
|
10
8
|
end
|
11
9
|
|
12
|
-
it
|
13
|
-
|
14
|
-
expect(Egn::Validator.validate("6101347500")).to be_false
|
10
|
+
it 'fails for incorrect dates' do
|
11
|
+
expect(Egn::Validator.validate('6101347500')).to be_false
|
15
12
|
end
|
16
13
|
|
17
|
-
it
|
18
|
-
Array.new(10_000) { |
|
14
|
+
it 'checks 10 000 of the generated numbers' do
|
15
|
+
Array.new(10_000) { |_| Egn.generate }.each do |egn|
|
19
16
|
result = Egn::Validator.validate(egn)
|
20
17
|
expect(result).to be_true, "Failed for #{egn}"
|
21
18
|
end
|
22
19
|
end
|
23
|
-
|
24
20
|
end
|
25
|
-
|
26
21
|
end
|
27
|
-
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gmitrev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
116
|
+
rubygems_version: 2.4.5
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
119
|
summary: An easy way to generate and validate EGN numbers and parse them for useful
|