Skip to content

Validação do RENAVAM #430

@camilamaia

Description

@camilamaia
Member

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

Preciso de uma função que valide se um número RENAVAM é correto. O RENAVAM é um número único para cada veículo no Brasil, e a validação é crucial para garantir que o número informado está correto e associado a um veículo.

Descreva a solução que você gostaria

  • Uma função is_valid_renavam, que recebe uma string representando o RENAVAM e retorna True se o número for válido e False caso contrário.
  • A função deve verificar se o RENAVAM tem exatamente 11 dígitos.
  • A lógica para calcular o dígito verificador deve ser implementada, conforme descrito anteriormente.
  • A função deve lidar com entradas que não são numéricas, entradas com espaços e outros caracteres não permitidos.
  • A função deve considerar o maior número de edge cases possíveis, como RENAVAM com caracteres especiais e entradas vazias.

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/renavam.py.

    def is_valid_renavam(renavam):  # type: (str) -> bool
        """
        Validates the Brazilian vehicle registration number (RENAVAM).
    
        This function takes a RENAVAM string and checks if it is valid. 
        A valid RENAVAM consists of exactly 11 digits, with the last digit as 
        a verification digit calculated from the previous 10 digits.
    
        Args:
            renavam (str): The RENAVAM string to be validated.
    
        Returns:
            bool: True if the RENAVAM is valid, False otherwise.
    
        Example:
            >>> is_valid_renavam('12345678901')
            True
            >>> is_valid_renavam('12345678900')
            False
            >>> is_valid_renavam('1234567890a')
            False
            >>> is_valid_renavam('12345678 901')
            False
            >>> is_valid_renavam('12345678')  # Less than 11 digits
            False
            >>> is_valid_renavam('')  # Empty string
            False
        """
        # implementar a lógica da função aqui

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

    # RENAVAM Imports
    from brutils.renavam import (
        is_valid_renavam,
    )

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

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

    from unittest import TestCase
    from brutils.renavam import is_valid_renavam
    
    class TestRENAVAM(TestCase):
        def test_is_valid_renavam(self):
            # Testes para RENAVAM válidos
            self.assertTrue(is_valid_renavam('12345678901'))  # Supondo que seja válido
            self.assertFalse(is_valid_renavam('12345678900'))  # Supondo que seja inválido
    
            # Testes para entradas inválidas
            self.assertFalse(is_valid_renavam('1234567890a'))  # Contém letra
            self.assertFalse(is_valid_renavam('12345678 901'))  # Contém espaço
            self.assertFalse(is_valid_renavam('12345678'))  # Menos de 11 dígitos
            self.assertFalse(is_valid_renavam(''))  # String vazia
            self.assertFalse(is_valid_renavam('123456789012'))  # Mais de 11 dígitos
            self.assertFalse(is_valid_renavam('abcdefghijk'))  # Apenas letras
            self.assertFalse(is_valid_renavam('12345678901!'))  # Contém caractere especial
    
            # implementar mais casos de teste aqui se necessário
  4. Seguir os passos seguintes do guia de contribuição.

Contexto adicional

Activity

LucasAlvws

LucasAlvws commented on Oct 21, 2024

@LucasAlvws

Posso pegar?

LucasAlvws

LucasAlvws commented on Oct 21, 2024

@LucasAlvws

"A lógica para calcular o dígito verificador deve ser implementada, conforme descrito anteriormente.", não consegui entender qual é a lógica. É apenas verificar se há 11 digitos numéricos?

LucasAlvws

LucasAlvws commented on Oct 23, 2024

@LucasAlvws
Oleari19

Oleari19 commented on Jan 28, 2025

@Oleari19

bora!

github-actions

github-actions commented on Jan 28, 2025

@github-actions

Issue 430 atribuida a Oleari19 🚀"
"Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."

added a commit that references this issue on Feb 1, 2025
linked a pull request that will close this issue on Feb 1, 2025
github-actions

github-actions commented on May 13, 2025

@github-actions

⚠️ [PT-BR] Esta issue está inativa há 104 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.

⚠️ [EN] This issue has been inactive for 104 days. The assignees will be removed in 7 days if there are no updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @camilamaia@LucasAlvws@Oleari19

      Issue actions

        Validação do RENAVAM · Issue #430 · brazilian-utils/brutils-python