diff --git a/georef_ar_address/address_data.py b/georef_ar_address/address_data.py index 02e12cd..3c95499 100644 --- a/georef_ar_address/address_data.py +++ b/georef_ar_address/address_data.py @@ -117,6 +117,28 @@ def normalized_door_number_value(self): match = re.search(r'\d+', self._door_number_value) return int(match.group(0)) if match else None + def normalized_door_number_unit(self): + """Retorna la unidad de la altura de la dirección. Por el momento, las + unidades disponibles son: + + - None: Altura sin unidad. Esto corresponde a alturas normales (número + de calle). Asociado a direcciones que utilizan "N", "N°", "Nro.", + etc. + - 'km': Kilómetros. + + Returns: + None, str: Unidad normalizada de la altura. + + """ + if not self._door_number_unit: + return None + + if re.search(r'km|kil(o|ó)metro', self._door_number_unit, + re.IGNORECASE): + return 'km' + + return None + @property def type(self): """Getter para el atributo '_type'. diff --git a/tests/test_georef_ar_address.py b/tests/test_georef_ar_address.py index 417b6c9..8601096 100644 --- a/tests/test_georef_ar_address.py +++ b/tests/test_georef_ar_address.py @@ -193,3 +193,26 @@ def test_none_door_number_value(self): 'normalized_door_number_value()'.""" data = self.parser.parse('Leandro Alem S/N') self.assertIsNone(data.normalized_door_number_value()) + + +class DoorNumberUnitTest(unittest.TestCase): + def setUp(self): + self.parser = AddressParser() + + def test_int_door_number_unit_none(self): + """Una dirección con altura sin prefijo debería devolver None en + 'normalized_door_number_unit()'.""" + data = self.parser.parse('Callao 1231') + self.assertIsNone(data.normalized_door_number_unit()) + + def test_int_door_number_unit_none_n(self): + """Una dirección con altura sin prefijo 'N' debería devolver None en + 'normalized_door_number_unit()'.""" + data = self.parser.parse('Callao N 1231') + self.assertIsNone(data.normalized_door_number_unit()) + + def test_int_door_number_unit_km(self): + """Una dirección con altura sin prefijo 'KM.' debería devolver 'km' en + 'normalized_door_number_unit()'.""" + data = self.parser.parse('Ruta 33 KM. 33') + self.assertEqual(data.normalized_door_number_unit(), 'km')