Closed fitorec closed 1 year ago
Gracias por tu curiosidad.
La razón por la cuál la función está dividida en dos es porque hace el testing más sencillo. Si has tenido oportunidad de observar la estrategia de testing del proyecto, está basada en Hypothesis, con la cuál genera datos de prueba arbitrarios. De cualquier manera también se ha probado manualmente contra cerca de 60k registros.
Por ahora no tengo intenciones de modificar el proyecto pero aún así gracias por tu entusiasmo!
Hola,
Buenas, estuve revisando un poco el código y me llamó un poco la atención el como se genera la suma de verificación.
Veo que lo divides en dos partes:
_verification_sum
)_sum_to_verify_digit
).Por otra parte el alfabeto de caracteres válidos, en donde se repite el valor de N y genera de la siguiente manera:
Si ejecutamos un
print(_CHARSET)
el resultado es0123456789ABCDEFGHIJKLMNNOPQRSTUVWXYZ
.Revisando esto, se puede refactorizar dichas funciones en una sola. Si previamente se validan que todos los caracteres son validos (p.e. usando un regex), podría quedar como:
Quizás una prueba mas amplia podría revisar el funcionamiento e incluso performance de dichas funciones,con un set de datos mas grande(un par de miles de registros) y probar si el valor generado es el esperado.
Para esto se puede usar este conjunto de datos:
Finalmente si deseas que te ayude en algo, quizás metiendo este set de datos, en las pruebas o refactolizando dicho código, avísame por este medio yo estaría encantado de colaborar.