Author: dlanglais Date: 2010-01-29 01:26:22 +0100 (Fri, 29 Jan 2010) New Revision: 38 Modified: trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnImpl.java trunk/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnTest.java Log: r?\195?\169?\195?\169criture et test des fonctions hashCode() et equals() Modified: trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnImpl.java =================================================================== --- trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnImpl.java 2010-01-28 23:51:06 UTC (rev 37) +++ trunk/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnImpl.java 2010-01-29 00:26:22 UTC (rev 38) @@ -64,26 +64,17 @@ /** * {@inheritDoc} */ - public final String toString() { - String ret = ""; - - for (String key : column.keySet()) { - ret += key + column.get(key); + public final int hashCode() { + int hash = 0; + for(Cell c : column.values()) { + hash += c.hashCode(); } - - return ret; + return hash; } /** * {@inheritDoc} */ - public final int hashCode() { - return column.hashCode(); - } - - /** - * {@inheritDoc} - */ public boolean equals(Object o) { if (o instanceof Column) { @@ -95,4 +86,17 @@ return false; } } + + /** + * {@inheritDoc} + */ + public final String toString() { + String ret = ""; + + for (String key : column.keySet()) { + ret += key + "\t" + column.get(key); + } + + return ret; + } } Modified: trunk/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnTest.java =================================================================== --- trunk/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnTest.java 2010-01-28 23:51:06 UTC (rev 37) +++ trunk/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/ColumnTest.java 2010-01-29 00:26:22 UTC (rev 38) @@ -1,5 +1,7 @@ package org.nuiton.mapstoragemanager.plugins.bighashmap; +import java.util.HashMap; +import java.util.Map; import java.util.NoSuchElementException; import org.apache.commons.logging.Log; @@ -12,10 +14,12 @@ private static final Log log = LogFactory.getLog(ColumnTest.class); private Column columnActual; - private Object objectExpected; + private Column column2Actual; + private Object expected; + private Object expected2; /** - * On teste le comportement de get avec une cellule vide. + * We test column when empty. */ public void testGetVoid() { columnActual = new ColumnImpl<Object>(); @@ -28,13 +32,12 @@ } /** - * On ajoute un objet avec une clé. - * On tente de récupérer celui-ci. + * We add one object and we try to get it. */ public void testPut() { columnActual = new ColumnImpl<Object>(); - objectExpected = new Object(); + expected = new Object(); try { columnActual.get("object 1"); @@ -43,9 +46,111 @@ log.info("Exception levée correctement"); } - columnActual.put("object 1", objectExpected); + columnActual.put("object 1", expected); - assertEquals(columnActual.get("object 1"), objectExpected); + assertEquals(columnActual.get("object 1"), expected); } + + /** + * testhashCode(). + */ + public void testHashCode() { + + int hashCodeSum = 0; + Object toStore; + + /** + * We create a new column and verify that hashCode is 0. + */ + columnActual = new ColumnImpl<Integer>(); + assertEquals(columnActual.hashCode(), 0); + + /** + * We put a Integer(10) and control that hashCode is already ok. + */ + toStore = new Integer(10); + columnActual.put("key1", toStore); + hashCodeSum += toStore.hashCode(); + assertEquals(columnActual.hashCode(), hashCodeSum); + + toStore = new String("peanuts"); + columnActual.put("key2", toStore); + hashCodeSum += toStore.hashCode(); + assertEquals(columnActual.hashCode(), hashCodeSum); + } + + /** + * testEquals(). + */ + public void testEquals() { + + /** + * We create two columns. + */ + columnActual = new ColumnImpl<Object>(); + column2Actual = new ColumnImpl<Object>(); + assertEquals(columnActual, column2Actual); + + /** + * We put one object in the first column, and not in the second. + */ + expected = new Integer(10); + columnActual.put("key1",expected); + assertNotSame(columnActual, column2Actual); + + /** + * We put the same object in the second column at the same key. + */ + column2Actual.put("key1",expected); + assertEquals(columnActual, column2Actual); + + /** + * We put the same object in the two column but at a different key. + */ + expected2 = new String("Tomatoes"); + columnActual.put("key2",expected2); + column2Actual.put("key3",expected2); + assertNotSame(columnActual, column2Actual); + } + + public void testToString() { + + Object toStore, toStore2; + Map<String,Object> columnContent; + /** + * We create one columns. + */ + columnActual = new ColumnImpl<Object>(); + columnContent = new HashMap<String, Object>(); + expected = new String(); + for (String key : columnContent.keySet()) { + expected += key + "\t" + columnContent.get(key); + } + assertEquals(columnActual.toString(), expected); + + /** + * We put one object in the column. + */ + toStore = new Integer(10); + columnActual.put("key1", toStore); + columnContent.put("key1", toStore); + expected = new String(); + for (String key : columnContent.keySet()) { + expected += key + "\t" + columnContent.get(key); + } + assertEquals(columnActual.toString(), expected); + + /** + * We put another object in the column. + */ + toStore2 = new String("yahoo !"); + columnActual.put("key2", toStore2); + columnContent.put("key2", toStore2); + expected = new String(); + for (String key : columnContent.keySet()) { + expected += key + "\t" + columnContent.get(key); + } + assertEquals(columnActual.toString(), expected); + } }