Skip to content

Commit 7c2fef7

Browse files
authored
Merge pull request #64 from Douglas019BR/complete_cpf_with_zeros_issue#63
complete cpf with zeros with not 11 digits and test it
2 parents a21e48e + a62c704 commit 7c2fef7

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

tests/test_CPF.py

+11
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,14 @@ def test_special_case(self):
5656
]
5757
for cpf, is_valid in cases:
5858
self.assertEqual(self.cpf.validate(cpf), is_valid)
59+
60+
def test_add_leading_zeros(self):
61+
"""Verifica se o método de adicionar zeros à esquerda funciona corretamente."""
62+
cases = [
63+
('123456789', False), # 9 digitos
64+
('12345678901', False), # 11 digitos
65+
('1234567', False), # 7 digitos
66+
('9380826044', True) # cpf valido
67+
]
68+
for cpf_input, is_valid in cases:
69+
self.assertEqual(self.cpf.validate(cpf_input), is_valid)

validate_docbr/CPF.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ def validate(self, doc: str = '') -> bool:
1818

1919
doc = list(self._only_digits(doc))
2020

21-
if len(doc) != 11:
22-
return False
21+
if len(doc) < 11:
22+
doc = self._complete_with_zeros(doc)
2323

2424
if not self.repeated_digits and self._check_repeated_digits(doc):
2525
return False
2626

2727
return self._generate_first_digit(doc) == doc[9] \
28-
and self._generate_second_digit(doc) == doc[10]
28+
and self._generate_second_digit(doc) == doc[10]
2929

3030
def generate(self, mask: bool = False) -> str:
3131
"""Gerar CPF."""
@@ -76,3 +76,8 @@ def _check_repeated_digits(self, doc: List[str]) -> bool:
7676
"""Verifica se é um CPF com números repetidos.
7777
Exemplo: 111.111.111-11"""
7878
return len(set(doc)) == 1
79+
80+
def _complete_with_zeros(self, doc: str) -> list[str]:
81+
"""Adiciona zeros à esquerda para completar o CPF."""
82+
zeros_needed = 11 - len(doc)
83+
return ['0'] * zeros_needed + doc

0 commit comments

Comments
 (0)