Skip to content

Instantly share code, notes, and snippets.

@macielportugal
Last active October 10, 2019 03:00
Show Gist options
  • Save macielportugal/4461a02c7e97041df698e703cfc88f95 to your computer and use it in GitHub Desktop.
Save macielportugal/4461a02c7e97041df698e703cfc88f95 to your computer and use it in GitHub Desktop.
import unittest
import re
class CEP:
MESSAGE_NUMBER_OUT_OF_RANGE = "Number out of range [100000-999999]"
MESSAGE_INVALID_NUMBER = "Invalid number"
def valid(self, number):
self.messages = []
number = str(number)
number = re.sub(r"[ .-]", "", number)
if not re.match(r"^[1-9][0-9]{5}$", number):
self.messages.append(self.MESSAGE_NUMBER_OUT_OF_RANGE)
if re.match(r"^(\d)\d\1|^(\d)\d{3}\2|^\d{2}(\d)\d\3|^\d(\d)\d\4|^\d(\d)\d{3}\5|^\d{3}(\d)\d\6", number):
self.messages.append(self.MESSAGE_INVALID_NUMBER)
return (False if self.messages else True)
class TestValidateCEP(unittest.TestCase):
def setUp(self):
self.cep = CEP()
def test_invalid_numbers(self):
self.assertFalse(self.cep.valid('121426'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid('552523'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid('122413'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid('121374'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid('231213'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid('122413'))
self.assertTrue(self.cep.MESSAGE_INVALID_NUMBER in self.cep.messages)
self.assertFalse(self.cep.valid(123))
self.assertTrue(self.cep.MESSAGE_NUMBER_OUT_OF_RANGE in self.cep.messages)
def test_valid_numbers(self):
self.assertTrue(self.cep.valid(523563))
self.assertTrue(self.cep.valid(112233))
self.assertTrue(self.cep.valid("236-789"))
self.assertTrue(self.cep.valid("236.789"))
self.assertTrue(self.cep.valid("236 789"))
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment