Skip to content

Validação de RG #428

Open
Open
@camilamaia

Description

@camilamaia

Seu pedido de recurso está relacionado a um problema? Por favor, descreva.

Precisamos de uma função que valide o Registro Geral (RG) brasileiro, considerando que cada estado pode ter um formato de RG diferente. Além disso, alguns estados podem ter regras específicas, como a presença de letras ou dígitos no formato. Queremos validar um RG para garantir sua autenticidade em diferentes contextos.

Descreva a solução que você gostaria

  • Uma função is_valid_rg, que recebe como entrada o RG (string) e a Unidade Federativa (UF) e retorna um valor booleano indicando se o RG é válido.
  • Caso o RG seja inválido, a função deve retornar False.
  • A função deve lidar com todos os formatos de RG dos diferentes estados brasileiros.
  • Considerar possíveis edge cases, como RGs com dígitos repetidos, tamanhos fora do padrão e símbolos inválidos.

Descreva alternativas que você considerou

  1. Seguir até o passo 8 do guia de contribuição.

  2. Como parte do passo 8, criar o arquivo: brutils-python/brutils/rg.py.

    def is_valid_rg(rg, uf):  # type: (str, str) -> bool
        """
        Validates a Brazilian RG (Registro Geral) based on the state (UF).
    
        This function checks whether a given RG is valid for a specific state in Brazil. Each state
        may have its own RG format, and the function should handle these differences.
    
        Args:
            rg (str): The RG to be validated.
            uf (str): The state (UF) for which the RG should be validated.
    
        Returns:
            bool: Returns True if the RG is valid, or False if it is invalid.
    
        Example:
            >>> is_valid_rg('12.345.678-9', 'SP')
            True
            >>> is_valid_rg('MG-12.345.678', 'MG')
            True
            >>> is_valid_rg('123456789', 'RJ')
            False
            >>> is_valid_rg('A12345678', 'SP')
            False
            >>> is_valid_rg('12.345.678', 'SP')
            False
        """
        # implementar a lógica da função aqui

    Importar a nova função no arquivo brutils-python/brutils/__init__.py:

    # RG Imports
    from brutils.rg import (
        is_valid_rg,
    )

    E adicionar o nome da nova função na lista __all__ do mesmo arquivo brutils-python/brutils/__init__.py:

    __all__ = [
        ...
        # RG
        'is_valid_rg',
    ]
  3. Como parte do passo 9, criar o arquivo de teste: brutils-python/tests/test_rg.py.

    from unittest import TestCase
    from brutils.rg import is_valid_rg
    
    class TestRG(TestCase):
        def test_is_valid_rg(self):
            # Testes para RGs válidos
            self.assertTrue(is_valid_rg('12.345.678-9', 'SP'))
            self.assertTrue(is_valid_rg('MG-12.345.678', 'MG'))
            self.assertTrue(is_valid_rg('123456789', 'RJ'))
    
            # Testes para RGs inválidos
            self.assertFalse(is_valid_rg('A12345678', 'SP'))  # Letras não permitidas
            self.assertFalse(is_valid_rg('1234567890', 'SP'))  # RG longo demais
            self.assertFalse(is_valid_rg('12.345.678-10', 'SP'))  # Dígito verificador incorreto
    
            # Testes para entradas malformadas
            self.assertFalse(is_valid_rg('', 'SP'))  # Entrada vazia
            self.assertFalse(is_valid_rg('12.345.678', 'SP'))  # Formato incorreto sem dígito verificador
            self.assertFalse(is_valid_rg('12.345.678-9', 'XX'))  # UF inválida
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

  • Cada estado brasileiro pode ter um formato de RG ligeiramente diferente, então a função deve lidar com essas variações regionais.
  • A função deve ser capaz de identificar formatos incorretos, dígitos repetidos e RGs malformados.

Links de Referência

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions