cpf_generator 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bede1f72e37013b8979ec40d12f224e472740b2e
4
- data.tar.gz: 36c37b13b2192ce019e6a91634191b0ef9fd6a9b
3
+ metadata.gz: 7106fd831fb3d72794651374473275139de66f71
4
+ data.tar.gz: b9c3c285ae90f98866c6ef7e1f3b205640a06d17
5
5
  SHA512:
6
- metadata.gz: eefb7379d9fb18f7a897581b66d5caf8cbc6f9a4b954f6a2003f6fdc26bfe6078a26bfb6d7b51d20390d2846ece17a051dce0b4635a0015a200e8d0194a54923
7
- data.tar.gz: a3450ce7948e9463f766e83b3fe122c340e3069fa00d194d6f4e3f4c231a243b85120823d80e6639d8c304f98721bc85297f7956f4e55c71bfe49bf87daf24d0
6
+ metadata.gz: c8a8178e96b3575cc17fbc1abf6ecde4ade2117fd947a2bef9eb983481151b02a37e792d4dbdcf41a1f9f2f85aff28164eba22ae2b890cedc4576ffcebabe815
7
+ data.tar.gz: d39e575ff05fe7d0095e2850da97486962f5e0752062262252350827fe92c7cf3039b9a11ac94648b9b34edca991371a53add9ce2476575dcb84e43b0783eb49
data/README.md CHANGED
@@ -1,29 +1,40 @@
1
1
  # CpfGenerator
2
2
 
3
- TODO: Write a gem description
3
+ Gerador de cpf para testes. É algo bem básico usado para gerar cpfs válidos para ser usados em testes.
4
4
 
5
- ## Installation
5
+ EN: This is a simple gem to create brazilian cpf numbers to be used for software tests
6
6
 
7
- Add this line to your application's Gemfile:
7
+ ## Instalação
8
8
 
9
- gem 'cpf_generator'
9
+ Adicione essa linha no Gemfile da sua aplicação:
10
10
 
11
- And then execute:
11
+ gem 'cpf_generator', require: false
12
+
13
+ Execute o bundle para instalar:
12
14
 
13
15
  $ bundle
14
16
 
15
- Or install it yourself as:
17
+ Ou se preferir, instale no seu sistema:
16
18
 
17
19
  $ gem install cpf_generator
18
20
 
19
- ## Usage
21
+ ## Uso
22
+
23
+ A gem te disponibiliza dois métodos para gerar cpf. **formatted** e **unformatted**
24
+
25
+ require 'cpf_generator'
26
+
27
+ # Para gerar um cpf formatado
28
+ CpfGenerator.formatted => # 710.743.079-33
29
+
30
+ # Para gerar um cpf não formatado
31
+ CpfGenerator.unformatted => # 71074307933
20
32
 
21
- TODO: Write usage instructions here
22
33
 
23
- ## Contributing
34
+ ## Contribuindo
24
35
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
36
+ 1. Faça um Fork
37
+ 2. Crie um novo branch para a sua modificação (`git checkout -b my-new-feature`)
38
+ 3. Commit suas alterações (`git commit -am 'Add some feature'`)
39
+ 4. Faça um Push para o branch (`git push origin my-new-feature`)
40
+ 5. Crie um novo Pull Request
@@ -1,42 +1,65 @@
1
1
  require "cpf_generator/version"
2
2
 
3
3
  module CpfGenerator
4
+ def initialize
5
+ numbers
6
+ end
7
+
8
+ def self.formatted
9
+ Cpf.new(numbers).formatted
10
+ end
11
+
12
+ def self.unformatted
13
+ Cpf.new(numbers).unformatted
14
+ end
15
+
16
+ def self.numbers
17
+ [*0..9].sample(9)
18
+ end
19
+
4
20
  class Cpf
5
21
  attr_accessor :numbers
6
22
 
7
- def initialize
8
- @numbers = [*0..9].sample(9)
23
+ def initialize(numbers)
24
+ @numbers = numbers
25
+ end
26
+
27
+ def formatted
28
+ first_dv
29
+ second_dv
30
+ cpf = @numbers.join("")
31
+ "#{cpf[0..2]}.#{cpf[3..5]}.#{cpf[6..8]}-#{cpf[9..11]}"
32
+ end
33
+
34
+ def unformatted
35
+ first_dv
36
+ second_dv
37
+ @numbers.join("")
9
38
  end
10
39
 
11
40
  def first_dv
12
41
  value = 0
13
- down = [10,9,8,7,6,5,4,3,2]
14
- up = [0,1,2,3,4,5,6,7,8]
42
+ multipliers = [10,9,8,7,6,5,4,3,2]
15
43
 
16
- 9.times do |n|
17
- value += @numbers[up[n]].to_i * down[n]
44
+ multipliers.each_with_index do |mult, index|
45
+ value += @numbers[index] * mult
18
46
  end
19
47
 
20
- remainder = (value % 11)
21
- if remainder < 2
22
- @numbers << 0
23
- 0
24
- else
25
- @numbers << (11 - remainder)
26
- (11 - remainder)
27
- end
48
+ check_remainder(value % 11)
28
49
  end
29
50
 
30
51
  def second_dv
31
52
  value = 0
32
- down = [11,10,9,8,7,6,5,4,3,2]
33
- up = [0,1,2,3,4,5,6,7,8,9]
53
+ multipliers = [11,10,9,8,7,6,5,4,3,2]
34
54
 
35
- 10.times do |n|
36
- value += @numbers[up[n]].to_i * down[n]
55
+ multipliers.each_with_index do |mult, index|
56
+ value += @numbers[index] * mult
37
57
  end
38
58
 
39
- remainder = (value % 11)
59
+ check_remainder(value % 11)
60
+ end
61
+
62
+ def check_remainder(remainder)
40
63
  if remainder < 2
41
64
  @numbers << 0
42
65
  0
@@ -45,18 +68,5 @@ module CpfGenerator
45
68
  (11 - remainder)
46
69
  end
47
70
  end
48
-
49
- def formatted
50
- first_dv
51
- second_dv
52
- cpf = @numbers.join("")
53
- "#{cpf[0..2]}.#{cpf[3..5]}.#{cpf[6..8]}-#{cpf[9..11]}"
54
- end
55
-
56
- def unformatted
57
- first_dv
58
- second_dv
59
- @numbers.join("")
60
- end
61
71
  end
62
72
  end
@@ -1,3 +1,3 @@
1
1
  module CpfGenerator
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,29 +1,44 @@
1
1
  require 'spec_helper'
2
2
  require_relative '../../lib/cpf_generator'
3
3
 
4
- describe "CPF class" do
5
- it "initialize a cpf class with an array of 9 randon numbers" do
6
- first_cpf = CpfGenerator::Cpf.new
7
- first_cpf.numbers.size.should == 9
4
+ describe CpfGenerator do
5
+
6
+ it "#formatted" do
7
+ CpfGenerator.formatted.should =~ /\d{3}.\d{3}.\d{3}-\d{2}$/
8
+ end
9
+
10
+ it "a new formatted cpf always need be generated" do
11
+ CpfGenerator.formatted.should_not == CpfGenerator.formatted
12
+ end
13
+
14
+ it "#unformatted" do
15
+ CpfGenerator.unformatted.should match(/\d{11}$/)
16
+ end
8
17
 
9
- second_cpf = CpfGenerator::Cpf.new
10
- second_cpf.numbers.size.should == 9
18
+ it "a new unformatted cpf always need be generated" do
19
+ CpfGenerator.unformatted.should_not == CpfGenerator.unformatted
20
+ end
11
21
 
12
- first_cpf.numbers.should_not == second_cpf.numbers
22
+ it "#numbers" do
23
+ CpfGenerator.numbers.size.should == 9
13
24
  end
25
+ end
26
+
27
+
28
+ describe "CPF class" do
14
29
 
15
30
  describe "#first_dv" do
16
31
  it "with remainder < 2" do
17
- cpf = CpfGenerator::Cpf.new
18
32
  numbers = [3, 7, 2, 0, 5, 8, 6, 3, 9]
33
+ cpf = CpfGenerator::Cpf.new(numbers)
19
34
  cpf.numbers = numbers
20
35
 
21
36
  cpf.first_dv.should == 1
22
37
  end
23
38
 
24
39
  it "with remainder >= 2" do
25
- cpf = CpfGenerator::Cpf.new
26
40
  numbers = [2, 1, 1, 6, 3, 0, 7, 8, 9]
41
+ cpf = CpfGenerator::Cpf.new(numbers)
27
42
  cpf.numbers = numbers
28
43
 
29
44
  cpf.first_dv.should == 9
@@ -32,16 +47,16 @@ describe "CPF class" do
32
47
 
33
48
  describe "#second_dv" do
34
49
  it "with remainder < 2" do
35
- cpf = CpfGenerator::Cpf.new
36
50
  numbers = [2, 1, 1, 3, 3, 0, 7, 8, 9, 9]
51
+ cpf = CpfGenerator::Cpf.new(numbers)
37
52
  cpf.numbers = numbers
38
53
 
39
54
  cpf.second_dv.should == 0
40
55
  end
41
56
 
42
57
  it "with remainder >= 2" do
43
- cpf = CpfGenerator::Cpf.new
44
58
  numbers = [1, 7, 2, 0, 5, 8, 6, 3, 9, 0]
59
+ cpf = CpfGenerator::Cpf.new(numbers)
45
60
  cpf.numbers = numbers
46
61
 
47
62
  cpf.second_dv.should == 2
@@ -49,16 +64,16 @@ describe "CPF class" do
49
64
  end
50
65
 
51
66
  it "format as 000.000.000-00" do
52
- cpf = CpfGenerator::Cpf.new
53
67
  numbers = [3, 4, 4, 9, 6, 4, 0, 4, 5]
68
+ cpf = CpfGenerator::Cpf.new(numbers)
54
69
  cpf.numbers = numbers
55
70
 
56
71
  cpf.formatted.should == "344.964.045-32"
57
72
  end
58
73
 
59
74
  it "unformated " do
60
- cpf = CpfGenerator::Cpf.new
61
75
  numbers = [3, 4, 4, 9, 6, 4, 0, 4, 5]
76
+ cpf = CpfGenerator::Cpf.new(numbers)
62
77
  cpf.numbers = numbers
63
78
 
64
79
  cpf.unformatted.should == "34496404532"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpf_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Carlos Ustra Junior
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-01 00:00:00.000000000 Z
11
+ date: 2013-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 2.0.0
93
+ rubygems_version: 2.0.6
94
94
  signing_key:
95
95
  specification_version: 4
96
96
  summary: Gerador de cpf para ser usados para testes