class Test_1_AddressTestSetters(unittest.TestCase): def setUp(self): testlog.debug('Instantiate null address, address.setter list') self._address = Address(user_text) self._address_setters = [ i for i in dict( inspect.getmembers(Address, predicate=inspect.ismethod)) if i[:3] == 'set' ] #self._address_setters.remove('setAddressPositions') def tearDown(self): testlog.debug('Destroy null address') self._address = None self._address_setters = None def test10_instSetters(self): '''Tests that all the setters set a matching attribute i.e. setAttribute("X") -> self._Attribute = "X"''' #this no longer works since changing to full path attribute names eg _components_roadName return testlog.debug('Test_1.10 Instantiate all setters') for asttr in self._address_setters: aval = self._generateAttrVal(asttr) aname = self._generateAttrName(asttr) getattr(self._address, asttr)(aval) self.assertEqual( getattr(self._address, aname), aval, 'set* : Setter {} not setting correct attribute value {}'. format(asttr, aval)) #@unittest.skip("Test skipped awaiting finalisation of Address Class structure") def test30_checkPopulatedAddressChangeDict(self): '''Tests whether JSON object gets created correctly''' #this function has moved to addressfactory testlog.debug( 'Test_1.30 Attributes set to match JSON sample and compare') #return True for asm in self._address_setters: if asm == 'setAddressPositions': getattr(self._address, asm)([ Position(), ]) continue aval = self._generateAttrVal(asm) getattr(self._address, asm)(aval) self._address.setVersion(100) for at in (ActionType.ADD, ActionType.RETIRE, ActionType.UPDATE): jresult = AddressChangeFactory().convertAddress(self._address, at) self.assertEqual( jresult, getTestData(at), 'JSON Address constructed incorrectly {}'.format(jresult)) def test31_checkAddressDictNullRemoval(self): '''check whether JSON output is truncated correctly on null inputs''' pass def test32_checkAddressDictErrorRaisedOnNull(self): '''Check error raised if attempt to create JSON output on null address array''' pass #------------------------------------------------------------------------------ def _generateAttrVal(self, setmthd): s = self._special(setmthd) if s: return s setmthd = re.match('set_*(.*)', setmthd).group(1) return setmthd[:1].upper() + ''.join( [s for s in setmthd[1:] if ord(s) > 64 and ord(s) < 91]) def _generateAttrName(self, setmthd): setmthd = re.match('set_*(.*)', setmthd).group(1) return '_' + setmthd[:1].lower() + setmthd[1:] def _special(self, meth): if meth == 'setObjectType': return 'Parcel' if meth == 'setAddressType': return 'Road' if meth == 'setLifecycle': return 'Current' return
class Test_1_AddressTestSetters(unittest.TestCase): def setUp(self): testlog.debug('Instantiate null address, address.setter list') self._address = Address(user_text) self._address_setters = [i for i in dict(inspect.getmembers(Address, predicate=inspect.ismethod)) if i[:3]=='set'] #self._address_setters.remove('setAddressPositions') def tearDown(self): testlog.debug('Destroy null address') self._address = None self._address_setters = None def test10_instSetters(self): '''Tests that all the setters set a matching attribute i.e. setAttribute("X") -> self._Attribute = "X"''' #this no longer works since changing to full path attribute names eg _components_roadName return testlog.debug('Test_1.10 Instantiate all setters') for asttr in self._address_setters: aval = self._generateAttrVal(asttr) aname = self._generateAttrName(asttr) getattr(self._address, asttr)(aval) self.assertEqual(getattr(self._address, aname), aval, 'set* : Setter {} not setting correct attribute value {}'.format(asttr,aval)) #@unittest.skip("Test skipped awaiting finalisation of Address Class structure") def test30_checkPopulatedAddressChangeDict(self): '''Tests whether JSON object gets created correctly''' #this function has moved to addressfactory testlog.debug('Test_1.30 Attributes set to match JSON sample and compare') #return True for asm in self._address_setters: if asm == 'setAddressPositions': getattr(self._address, asm)([Position(),]) continue aval = self._generateAttrVal(asm) getattr(self._address, asm)(aval) self._address.setVersion(100) for at in (ActionType.ADD,ActionType.RETIRE,ActionType.UPDATE): jresult = AddressChangeFactory().convertAddress(self._address,at) self.assertEqual(jresult, getTestData(at), 'JSON Address constructed incorrectly {}'.format(jresult)) def test31_checkAddressDictNullRemoval(self): '''check whether JSON output is truncated correctly on null inputs''' pass def test32_checkAddressDictErrorRaisedOnNull(self): '''Check error raised if attempt to create JSON output on null address array''' pass #------------------------------------------------------------------------------ def _generateAttrVal(self,setmthd): s = self._special(setmthd) if s: return s setmthd = re.match('set_*(.*)',setmthd).group(1) return setmthd[:1].upper()+''.join([s for s in setmthd[1:] if ord(s)>64 and ord(s)<91]) def _generateAttrName(self,setmthd): setmthd = re.match('set_*(.*)',setmthd).group(1) return '_'+setmthd[:1].lower()+setmthd[1:] def _special(self,meth): if meth == 'setObjectType':return 'Parcel' if meth == 'setAddressType':return 'Road' if meth == 'setLifecycle':return 'Current' return