Author: ruschein
Date: 2010-12-02 16:18:55 -0800 (Thu, 02 Dec 2010)
New Revision: 23078

Modified:
   
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
Log:
Added more unit tests for CyTable.

Modified: 
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
===================================================================
--- 
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
    2010-12-02 23:00:43 UTC (rev 23077)
+++ 
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
    2010-12-03 00:18:55 UTC (rev 23078)
@@ -396,4 +396,67 @@
                matchingRows = table.getMatchingRows("someLongs", -15L);
                assertTrue(matchingRows.isEmpty());
        }
+
+       @Test
+       public void testSetAndGetTitle() {
+               table.setTitle("my title");
+               assertEquals(table.getTitle(), "my title");
+       }
+
+       @Test(expected=IllegalArgumentException.class)
+       public void testGetListElementTypeForANonListColumn() {
+               table.createColumn("someList2", Boolean.class);
+               table.getListElementType("someList2");
+       }
+
+       @Test
+       public void testDeleteColumnNoOpWithNonexistingColumn() {
+               table.deleteColumn("x");
+       }
+
+       @Test(expected=NullPointerException.class)
+       public void testGetColumnValuesWithNullFirstArgument() {
+               table.getColumnValues(null, String.class);
+       }
+
+       @Test(expected=NullPointerException.class)
+       public void testGetColumnValuesWithNullSecondArgument() {
+               table.createColumn("x", String.class);
+               table.getColumnValues("x", null);
+       }
+
+       @Test
+       public void testGetAllRows() {
+               assertTrue(table.getAllRows().size() == 1);
+               final CyRow row1 = table.getRow(11L);
+               assertTrue(table.getAllRows().size() == 2);
+               final CyRow row2 = table.getRow(22L);
+               assertTrue(table.getAllRows().size() == 3);
+       }
+
+       @Test(expected=IllegalArgumentException.class)
+       public void testGetListWithANonExistantColumn() {
+               attrs.getList("x", String.class);
+       }
+
+       @Test(expected=IllegalArgumentException.class)
+       public void testGetListWithAnInvalidListElementType() {
+               table.createListColumn("x", Long.class);
+               attrs.getList("x", String.class);
+       }
+
+       @Test
+       public void testGetListWithAnMissingRowEntry() {
+               table.createListColumn("x", Long.class);
+               assertNull(attrs.getList("x", Long.class));
+       }
+
+       @Test
+       public void testSetlist() {
+               table.createListColumn("l", String.class);
+               final List<String> strings = new ArrayList<String>();
+               strings.add("joe");
+               attrs.set("l", strings);
+               assertEquals(attrs.getList("l", String.class), strings);
+       }
 }

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
     2010-12-02 23:00:43 UTC (rev 23077)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
     2010-12-03 00:18:55 UTC (rev 23078)
@@ -278,8 +278,11 @@
         */
        public <T> List<T> getColumnValues(String columnName, Class<? extends 
T> type) {
                if (columnName == null)
-                       throw new NullPointerException("column name is null");
+                       throw new NullPointerException("column name is null!");
 
+               if (type == null)
+                       throw new NullPointerException("column type is null!");
+
                Map<Object, Object> vals = attributes.get(columnName);
                if (vals == null)
                        throw new IllegalArgumentException("attribute does not 
exist");
@@ -371,7 +374,7 @@
                if (!(value instanceof Equation))
                        checkType(value);
 
-               Map<Object, Object> vls = attributes.get(columnName);
+               Map<Object, Object> keyToValueMap = attributes.get(columnName);
 
                final Class targetType = types.get(columnName);
                if (targetType.isAssignableFrom(value.getClass())
@@ -380,7 +383,7 @@
                        if (value instanceof Equation) {
                                final Equation equation = (Equation)value;
                                // TODO this is an implicit addRow - not sure 
if we want to refactor this or not
-                               vls.put(key, equation);
+                               keyToValueMap.put(key, equation);
                                final Object eqnValue = evalEquation(equation, 
key, columnName);
                                if (eqnValue == null)
                                        logger.warn("attempted premature 
evaluation evaluation for " + equation);
@@ -391,7 +394,7 @@
                        } else {
                                // TODO this is an implicit addRow - not sure 
if we want to refactor this or not
                                final Object newValue = columnType.cast(value);
-                               vls.put(key, newValue);
+                               keyToValueMap.put(key, newValue);
                                addToReverseMap(columnName, key, newValue);
                                
eventHelper.getMicroListener(RowSetMicroListener.class,
                                                             
getRow(key)).handleRowSet(columnName, newValue);
@@ -431,7 +434,7 @@
                        return false;
        }
 
-       private void setListX(final Object suid, final String columnName, final 
Object value) {
+       private void setListX(final Object key, final String columnName, final 
Object value) {
                if (value instanceof List) {
                        final List list = (List)value;
                        if (!list.isEmpty())
@@ -445,12 +448,14 @@
                                "value is not a List equation of a compatible 
type for column '"
                                + columnName + "'!");
 
-               Map<Object, Object> vls = attributes.get(columnName);
+               Map<Object, Object> keyToValueMap = attributes.get(columnName);
 
                // TODO this is an implicit addRow - not sure if we want to 
refactor this or not
-               vls.put(suid, value);
+               keyToValueMap.put(key, value);
+               if (value instanceof List)
+                       addToReverseMap(columnName, key, value);
                eventHelper.getMicroListener(RowSetMicroListener.class,
-                                            
getRow(suid)).handleRowSet(columnName, value);
+                                            
getRow(key)).handleRowSet(columnName, value);
        }
 
        private static boolean listEquationIsCompatible(final Equation equation,
@@ -470,17 +475,26 @@
                return false;
        }
 
-       private void unSetX(Object suid, String columnName) {
+       private void unSetX(final Object key, final String columnName) {
                if (!types.containsKey(columnName) || 
!attributes.containsKey(columnName))
                        throw new IllegalArgumentException("attribute: '" + 
columnName
                                                           + "' does not yet 
exist!");
 
-               Map<Object, Object> vls = attributes.get(columnName);
+               final Map<Object, Object> keyToValueMap = 
attributes.get(columnName);
+               if (!keyToValueMap.containsKey(key))
+                       return;
 
-               vls.remove(suid);
-               eventHelper.getMicroListener(RowSetMicroListener.class, 
getRow(suid)).handleRowSet(columnName,null);
+               final Object value = keyToValueMap.get(key);
+               if (!(value instanceof Equation))
+                       removeFromReverseMap(columnName, key, value);
+               keyToValueMap.remove(key);
+               eventHelper.getMicroListener(RowSetMicroListener.class, 
getRow(key)).handleRowSet(columnName, null);
        }
 
+       private static boolean isScalarColumnType(final Class type) {
+               return type != List.class && type != Map.class;
+       }
+
        private void removeFromReverseMap(final String columnName, final Object 
key, final Object value) {
                final Map<Object, Set<Object>> valueTokeysMap = 
reverse.get(columnName);
                Set<Object> keys = valueTokeysMap.get(value);
@@ -489,16 +503,15 @@
                        valueTokeysMap.remove(value);
        }
 
-       private Object getRawX(Object suid, String columnName) {
-               Map<Object, Object> vls = attributes.get(columnName);
-
-               if (vls == null)
+       private Object getRawX(final Object key, final String columnName) {
+               Map<Object, Object> keyToValueMap = attributes.get(columnName);
+               if (keyToValueMap == null)
                        return null;
 
-               return vls.get(suid);
+               return keyToValueMap.get(key);
        }
 
-       private <T> T getX(Object key, String columnName, Class<? extends T> 
type) {
+       private <T> T getX(final Object key, final String columnName, final 
Class<? extends T> type) {
                if (type.isAssignableFrom(List.class))
                        throw new IllegalArgumentException("use getList() to 
retrieve lists!");
 
@@ -551,12 +564,12 @@
        private <T> boolean isSetX(final Object key, final String columnName,
                                   final Class<? extends T> type)
        {
-               final Map<Object, Object> vls = attributes.get(columnName);
-               if (vls == null)
+               final Map<Object, Object> keyToValueMap = 
attributes.get(columnName);
+               if (keyToValueMap == null)
                        return false;
 
-               Object vl = vls.get(key);
-               if (vl == null)
+               Object value = keyToValueMap.get(key);
+               if (value == null)
                        return false;
 
                if (types.get(columnName).isAssignableFrom(type))
@@ -567,8 +580,14 @@
        }
 
        private Class<?> getClass(Class<?> c) {
+               if (c == Integer.class || c == Long.class || c == Double.class 
|| c == String.class
+                   || c == Boolean.class)
+                       return c;
+
                if (Integer.class.isAssignableFrom(c))
                        return Integer.class;
+               else if (Long.class.isAssignableFrom(c))
+                       return Long.class;
                else if (Double.class.isAssignableFrom(c))
                        return Double.class;
                else if (Boolean.class.isAssignableFrom(c))
@@ -579,8 +598,6 @@
                        return List.class;
                else if (Map.class.isAssignableFrom(c))
                        return Map.class;
-               else if (Long.class.isAssignableFrom(c))
-                       return Long.class;
                else
                        throw new IllegalArgumentException("invalid class: " + 
c.getName());
        }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to