← Back to team overview

oship-dev team mailing list archive

[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))