Example #1
0
class TestPerson(unittest.TestCase):
    def setUp(self):
        self.Person = Person('Adam','Skidmore')
        
    def tearDown(self):
        self.Person = None
        
    def test_person_initialisation(self):
        p = Person('Ian','Skidmore')     
        self.assertEqual(p.FirstName(),'Ian')
        self.assertEqual(p.FullName(),'Ian Skidmore')
        self.assertEqual(p.FullNameWithInitials(),'I Skidmore')
        self.assertEqual(p.Gender, None)
        
        p.Forenames.append('John')
        self.assertEqual(p.FirstName(),'Ian')
        self.assertEqual(p.FullName(),'Ian John Skidmore')
        self.assertEqual(p.FullNameWithInitials(),'I J Skidmore')    
        self.assertEqual(p.FullNameWithMiddleInitials(), 'Ian J Skidmore')
        
    def test_age_calculation(self):
        p = Person('Ian','Skidmore')
        p.DateOfBirth = datetime.date(1964,9,29)
        self.assertEqual(p.Age(),51)
        
        p = Person('Adam','Skidmore')
        p.DateOfBirth = datetime.date(2002,2,18)
        self.assertEqual(p.Age(),14)       
        
    def test_age_calculation_leap_year(self):
        p = Person('Adam','Skidmore')
        p.DateOfBirth = datetime.date(2000,2,29)
        self.assertEqual(p.Age(),16)    

    def test_has_mobile_phone(self):
        self.assertFalse(self.Person.HasMobilePhone())
        self.Person.MobilePhoneNumber = '07abcde'
        self.assertFalse(self.Person.HasMobilePhone())        
        self.Person.MobilePhoneNumber = '07789955357'
        self.assertTrue(self.Person.HasMobilePhone())
        self.Person.MobilePhoneNumber = '01159724441'
        self.assertFalse(self.Person.HasMobilePhone())       
        
    def test_has_landline_phone(self):
        self.assertFalse(self.Person.HasLandlinePhone())
        self.Person.LandlinePhoneNumber = '07789955357'
        self.assertFalse(self.Person.HasLandlinePhone())
        self.Person.LandlinePhoneNumber = '0115abcde'
        self.assertFalse(self.Person.HasLandlinePhone())  
        self.Person.LandlinePhoneNumber = '03459724441'
        self.assertFalse(self.Person.HasLandlinePhone())
        self.Person.LandlinePhoneNumber = '01159724441'
        self.assertTrue(self.Person.HasLandlinePhone())          
        
    def test_has_phone(self):
        self.assertFalse(self.Person.HasPhone())
        self.Person.LandlinePhoneNumber = '07789955357'
        self.assertFalse(self.Person.HasPhone())
        self.Person.LandlinePhoneNumber = '01159724441'
        self.assertTrue(self.Person.HasPhone())   
        self.Person.LandlinePhoneNumber = None
        self.assertFalse(self.Person.HasPhone())   
        self.Person.MobilePhoneNumber = '07789955357'
        self.assertTrue(self.Person.HasPhone())
        self.Person.MobilePhoneNumber = '01159724441'
        self.assertFalse(self.Person.HasPhone())          
        
    def test_has_email(self):
        self.assertFalse(self.Person.HasEMailAddress())        
        self.Person.EMailAddress = 'This is a fake emailaddress'
        self.assertFalse(self.Person.HasEMailAddress())
        self.Person.EMailAddress = '*****@*****.**'
        self.assertTrue(self.Person.HasEMailAddress())        

    def test_serialise(self):
        exp = '{"LandlinePhoneNumber": null, "Forenames": ["Adam"], "Gender": null, "Surnames": ["Skidmore"], "EMailAddress": null, "MobilePhoneNumber": null}'
        s = self.Person.to_JSON()
        self.assertEqual(s,exp)
        
    def test_deserialise(self):
        s = self.Person.to_JSON()
        p = Person()   
        p.LoadFromJSON(s)
        self.assertEqual(p.Forenames, self.Person.Forenames)
        self.assertEqual(p.Surnames, self.Person.Surnames)    
        self.assertEqual(p.Gender, self.Person.Gender)
        self.assertEqual(p.EMailAddress, self.Person.EMailAddress) 
        self.assertEqual(p.MobilePhoneNumber, self.Person.MobilePhoneNumber)
        self.assertEqual(p.LandlinePhoneNumber, self.Person.LandlinePhoneNumber)