def testAddRemoveProperty(self): pd = MethodPropertyDescriptor('myname', MyClass, getattr(MyClass, 'getName'), getattr(MyClass, 'setName')) item = BeanItem(self.MyClass('bean1')) self.assertEquals(6, len(item.getItemPropertyIds())) self.assertEquals(None, item.getItemProperty('myname')) item.addItemProperty('myname', pd.createProperty(item.getBean())) self.assertEquals(7, len(item.getItemPropertyIds())) self.assertEquals('bean1', item.getItemProperty('myname').getValue()) item.removeItemProperty('myname') self.assertEquals(6, len(item.getItemPropertyIds())) self.assertEquals(None, item.getItemProperty('myname'))
def testGetProperties(self): item = BeanItem(MySuperClass()) itemPropertyIds = item.getItemPropertyIds() self.assertEquals(3, len(itemPropertyIds)) self.assertTrue('superPrivate' in itemPropertyIds) self.assertTrue('superProtected' in itemPropertyIds) self.assertTrue('superPublic' in itemPropertyIds)
def testRemoveSuperProperty(self): item = BeanItem(MyClass('bean1')) itemPropertyIds = item.getItemPropertyIds() self.assertEquals(6, len(itemPropertyIds)) item.removeItemProperty('superPrivate') self.assertEquals(5, len(itemPropertyIds)) self.assertFalse(itemPropertyIds.contains('superPrivate'))
def testOverridingProperties(self): item = BeanItem(MyClass2('bean2')) itemPropertyIds = item.getItemPropertyIds() self.assertEquals(6, len(itemPropertyIds)) self.assertTrue(MyClass2 == item.getBean().__class__) # check that name2 accessed via MyClass2, not MyClass self.assertFalse(item.getItemProperty('name2').isReadOnly())
def testGetSuperClassProperties(self): item = BeanItem(self.MyClass('bean1')) itemPropertyIds = item.getItemPropertyIds() self.assertEquals(6, len(itemPropertyIds)) self.assertTrue('superPrivate' in itemPropertyIds) self.assertTrue('superProtected' in itemPropertyIds) self.assertTrue('superPublic' in itemPropertyIds) self.assertTrue('name' in itemPropertyIds) self.assertTrue('noField' in itemPropertyIds) self.assertTrue('name2' in itemPropertyIds)
def testPropertyExplicitOrder2(self): item = BeanItem(MyClass('bean1'), ['name', 'superPublic', 'name2', 'noField']) it = iter(item.getItemPropertyIds()) self.assertEquals('name', it.next()) self.assertEquals('superPublic', it.next()) self.assertEquals('name2', it.next()) self.assertEquals('noField', it.next()) self.assertFalse(it.hasNext())
def testPropertyBadPropertyName(self): ids = list() ids.append('name3') ids.append('name') # currently silently ignores non-existent properties item = BeanItem(MyClass('bean1'), ids) it = iter(item.getItemPropertyIds()) self.assertEquals('name', it.next()) self.assertFalse(it.hasNext())
def testPropertyExplicitOrder(self): ids = list() ids.append('name') ids.append('superPublic') ids.append('name2') ids.append('noField') item = BeanItem(MyClass('bean1'), ids) it = iter(item.getItemPropertyIds()) self.assertEquals('name', it.next()) self.assertEquals('superPublic', it.next()) self.assertEquals('name2', it.next()) self.assertEquals('noField', it.next()) self.assertFalse(it.hasNext())