cpf_generator 0.0.1 → 1.0.0

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 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