oship-dev team mailing list archive
-
oship-dev team
-
Mailing list archive
-
Message #01380
[Branch ~oship-dev/oship/devel] Rev 471: Added some missing methods to ItemTable. Bug 607524
------------------------------------------------------------
revno: 471
committer: Wagner Francisco Mezaroba <wagner@wagner-laptop>
branch nick: oship
timestamp: Wed 2010-08-18 10:36:39 -0300
message:
Added some missing methods to ItemTable. Bug 607524
modified:
src/oship/openehr/rm/data_structures/item_structure/__init__.py
src/oship/openehr/rm/data_structures/item_structure/tests/item_structure.py
--
lp:oship
https://code.launchpad.net/~oship-dev/oship/devel
Your team OSHIP Development Team is subscribed to branch lp:oship.
To unsubscribe from this branch go to https://code.launchpad.net/~oship-dev/oship/devel/+edit-subscription
=== modified file 'src/oship/openehr/rm/data_structures/item_structure/__init__.py'
--- src/oship/openehr/rm/data_structures/item_structure/__init__.py 2010-08-11 14:04:23 +0000
+++ src/oship/openehr/rm/data_structures/item_structure/__init__.py 2010-08-18 13:36:39 +0000
@@ -137,7 +137,6 @@
if len(row.items) > 0 and row.items[0].name.value == aKey:
return row
-
def hasRowWithKeys(self,keys):
u"""Return True if a row's first n columns contain the names of set of
keys."""
@@ -147,13 +146,20 @@
of keys."""
def elementAtCell(self,i, j):
- u"""
- NOTE: In the specs this is called elementAtCellij. I think it should be
- changed. Return the element at the intersection of column i and row j.
- i and j are integers. """
-
- def elementAtNamedCell(self,row_key, col_key):
- u"""Return the element at the intersection or col_key and row_key """
+ if i < 0 or j < 0:
+ raise ValueError(u'Arguments must be greater than 0')
+ if len(self.rows) <= j or (len(self.rows[0].items) <= i):
+ raise ValueError(u'Arguments must be less than row or column size')
+ return self.rows[j].items[i]
+
+ def elementAtNamedCell(self,rowKey, colKey):
+ if not self.hasColumnWithName(colKey):
+ raise ValueError(u'colKey inexistent')
+ cluster = self.namedRow(rowKey)
+ for item in cluster.items:
+ if item.name.value == colKey:
+ return item
+
def asHierarchy():
u"""Generate a CEN EN13606-compatible hierarchy consisting of a single
=== modified file 'src/oship/openehr/rm/data_structures/item_structure/tests/item_structure.py'
--- src/oship/openehr/rm/data_structures/item_structure/tests/item_structure.py 2010-08-11 14:04:23 +0000
+++ src/oship/openehr/rm/data_structures/item_structure/tests/item_structure.py 2010-08-18 13:36:39 +0000
@@ -76,12 +76,9 @@
class ItemTableTest(unittest.TestCase):
def setUp(self):
- self.cluster1Name = DvText(u'cluster1',None,None,None,None,None)
- self.cluster2Name = DvText(u'cluster2',None,None,None,None,None)
- self.cluster3Name = DvText(u'cluster3',None,None,None,None,None)
- self.cluster1 = self.createCluster(self.cluster1Name)
- self.cluster2 = self.createCluster(self.cluster2Name)
- self.cluster3 = self.createCluster(self.cluster3Name)
+ self.cluster1 = self.createCluster1()
+ self.cluster2 = self.createCluster2()
+ self.cluster3 = self.createCluster3()
self.rows = [self.cluster1, self.cluster2, self.cluster3]
self.anEmptyTable = self.createATable()
@@ -90,17 +87,45 @@
def tearDown(self):
self.aTable = None
- def createCluster(self, name):
- self.element1Name = DvText(u'element1',None,None,None,None,None)
- self.element2Name = DvText(u'element2',None,None,None,None,None)
- self.element3Name = DvText(u'element3',None,None,None,None,None)
-
- self.element1 = Element(None,None,None,None,self.element1Name,None,None,None,None)
- self.element2 = Element(None,None,None,None,self.element2Name,None,None,None,None)
- self.element3 = Element(None,None,None,None,self.element3Name,None,None,None,None)
-
- self.items = [self.element1, self.element2, self.element3]
- return Cluster(None,name,name,None,None,None,self.items,None)
+ def createCluster1(self):
+ self.cluster1Name = DvText(u'cluster1',None,None,None,None,None)
+ self.element1Cluster1Name = DvText(u'element1cluster1',None,None,None,None,None)
+ self.element2Cluster1Name = DvText(u'element2cluster1',None,None,None,None,None)
+ self.element3Cluster1Name = DvText(u'element3cluster1',None,None,None,None,None)
+
+ self.element1cluster1 = Element(None,None,None,None,self.element1Cluster1Name,None,None,None,None)
+ self.element2cluster1 = Element(None,None,None,None,self.element2Cluster1Name,None,None,None,None)
+ self.element3cluster1 = Element(None,None,None,None,self.element3Cluster1Name,None,None,None,None)
+
+ self.itemsCluster1 = [self.element1cluster1, self.element2cluster1, self.element3cluster1]
+ return Cluster(None,self.cluster1Name,self.cluster1Name,None,None,None,self.itemsCluster1,None)
+
+ def createCluster2(self):
+ self.cluster2Name = DvText(u'cluster2',None,None,None,None,None)
+ self.element1Cluster2Name = DvText(u'element1cluster2',None,None,None,None,None)
+ self.element2Cluster2Name = DvText(u'element2cluster2',None,None,None,None,None)
+ self.element3Cluster2Name = DvText(u'element3cluster2',None,None,None,None,None)
+
+ self.element1cluster2 = Element(None,None,None,None,self.element1Cluster2Name,None,None,None,None)
+ self.element2cluster2 = Element(None,None,None,None,self.element2Cluster2Name,None,None,None,None)
+ self.element3cluster2 = Element(None,None,None,None,self.element3Cluster2Name,None,None,None,None)
+
+ self.itemsCluster2 = [self.element1cluster2, self.element2cluster2, self.element3cluster2]
+ return Cluster(None,self.cluster2Name,self.cluster2Name,None,None,None,self.itemsCluster2,None)
+
+ def createCluster3(self):
+ self.cluster3Name = DvText(u'cluster3',None,None,None,None,None)
+ self.element1Cluster3Name = DvText(u'element1cluster3',None,None,None,None,None)
+ self.element2Cluster3Name = DvText(u'element2cluster3',None,None,None,None,None)
+ self.element3Cluster3Name = DvText(u'element3cluster3',None,None,None,None,None)
+
+ self.element1cluster3 = Element(None,None,None,None,self.element1Cluster3Name,None,None,None,None)
+ self.element2cluster3 = Element(None,None,None,None,self.element2Cluster3Name,None,None,None,None)
+ self.element3cluster3 = Element(None,None,None,None,self.element3Cluster3Name,None,None,None,None)
+
+ self.itemsCluster3 = [self.element1cluster3, self.element2cluster3, self.element3cluster3]
+ return Cluster(None,self.cluster3Name,self.cluster3Name,None,None,None,self.itemsCluster3,None)
+
def createATable(self, rows=None):
tableName = DvText(u'A Simple ItemTable',None,None,None,None,None)
@@ -116,7 +141,7 @@
self.assertEqual(0, self.anEmptyTable.columnCount())
def testColumnCountWithNotEmptyTable(self):
- self.assertEqual(len(self.items), self.aTable.columnCount())
+ self.assertEqual(len(self.itemsCluster1), self.aTable.columnCount())
def testRowNamesWithEmptyTable(self):
rowNames = self.anEmptyTable.rowNames()
@@ -134,8 +159,8 @@
def testColumnNamesWithNotEmptyTable(self):
columnNames = self.aTable.columnNames()
- self.assertEquals(len(self.items), len(columnNames))
- for name in (self.element1Name, self.element2Name, self.element3Name):
+ self.assertEquals(len(self.itemsCluster1), len(columnNames))
+ for name in (self.element1Cluster1Name, self.element2Cluster1Name, self.element3Cluster1Name):
self.assertTrue(name in columnNames)
def testIthRow(self):
@@ -145,7 +170,7 @@
self.assertRaises(IndexError, self.aTable.ithRow, 20)
def testHasRowWithExistentName(self):
- self.assertTrue(self.aTable.hasRowWithName(u'element1'))
+ self.assertTrue(self.aTable.hasRowWithName(u'element1cluster1'))
def testHasRowWithInexistentName(self):
self.assertFalse(self.aTable.hasRowWithName(u'inexistent name'))
@@ -157,7 +182,7 @@
self.assertRaises(ValueError, self.aTable.hasRowWithName, None)
def testHasColumnWithExistentName(self):
- self.assertTrue(self.aTable.hasColumnWithName(u'element1'))
+ self.assertTrue(self.aTable.hasColumnWithName(u'element1cluster1'))
def testHasColumnWithInexistentName(self):
self.assertFalse(self.aTable.hasColumnWithName(u'inexistent name'))
@@ -173,22 +198,48 @@
self.assertRaises(ValueError, self.aTable.namedRow, name)
def testNamedRowWithExistentName(self):
- name = u'element1'
+ name = u'element1cluster1'
self.assertEqual(self.cluster1, self.aTable.namedRow(name))
-"""
- def testNamedItemiWithEmptyName(self):
- name = ' '
- self.assertRaises(ValueError, self.aList.namedItem, name)
-
- def testNamedItemWithNoneName(self):
- self.assertRaises(ValueError, self.aList.namedItem, None)
-
- def testNamedItemWithValidNames(self):
- for item in self.items:
- self.assertEqual(item, self.aList.namedItem(item.name.value))
-
- def testNamedItemWithInvalidName(self):
- self.assertEqual(None, self.aList.namedItem(u'an invalid name'))
-"""
+ def testElementAtNamedCellWithCluster1(self):
+ for i in range(len(self.itemsCluster1)):
+ self.assertEqual( self.itemsCluster1[i], self.aTable.elementAtCell(0,i))
+
+ def testElementAtNamedCellWithCluster2(self):
+ for i in range(len(self.itemsCluster2)):
+ self.assertEqual( self.itemsCluster2[i], self.aTable.elementAtCell(1,i))
+
+ def testElementAtNamedCellWithCluster3(self):
+ for i in range(len(self.itemsCluster3)):
+ self.assertEqual( self.itemsCluster3[i], self.aTable.elementAtCell(2,i))
+
+ def testElementAtNamedCellWithNegativeColumnIndex(self):
+ self.assertRaises(ValueError, self.aTable.elementAtCell, 0, -1)
+
+ def testElementAtNamedCellWithClusterNegativeRowIndex(self):
+ self.assertRaises(ValueError, self.aTable.elementAtCell, -1, 0)
+
+ def testElementAtNamedCellWithTooBigColumnIndex(self):
+ self.assertRaises(ValueError, self.aTable.elementAtCell, 0, len(self.itemsCluster1))
+
+ def testElementAtNamedCellWithTooBigRowIndex(self):
+ self.assertRaises(ValueError, self.aTable.elementAtCell, len(self.rows), 0)
+
+ def testElementAtNamedCellWithInexistentColumnKey(self):
+ self.assertRaises(ValueError, self.aTable.elementAtNamedCell, self.cluster1name.value, u'inexistent column name')
+
+ def testElementAtNamedCellWithInexistentColumnKey(self):
+ self.assertRaises(ValueError, self.aTable.elementAtNamedCell, u'inexistent column name', self.element1Cluster1Name.value)
+
+ def testElementAtNamedCellCluster1(self):
+ for item in self.itemsCluster1:
+ self.assertEqual( item, self.aTable.elementAtNamedCell(self.element1Cluster1Name.value, item.name.value))
+
+ def testElementAtNamedCellCluster2(self):
+ for item in self.itemsCluster2:
+ self.assertEqual( item, self.aTable.elementAtNamedCell(self.element1Cluster2Name.value, item.name.value))
+
+ def testElementAtNamedCellCluster3(self):
+ for item in self.itemsCluster3:
+ self.assertEqual( item, self.aTable.elementAtNamedCell(self.element1Cluster3Name.value, item.name.value))