diff --git a/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/OntologyAlignmentImpl.java b/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/OntologyAlignmentImpl.java index c00962e248c3f382b483781fbf39ab732d667681..069f6d1828886ea9aa80892bf6660989303dc3d3 100644 --- a/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/OntologyAlignmentImpl.java +++ b/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/OntologyAlignmentImpl.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rh�ne-Alpes, 2007-2009 + * Copyright (C) INRIA, 2007-2010 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -58,8 +58,6 @@ import fr.inrialpes.exmo.align.impl.BasicAlignment; import fr.inrialpes.exmo.align.impl.URIAlignment; import fr.inrialpes.exmo.align.impl.ObjectAlignment; - -import org.semanticweb.owl.align.Parameters; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentProcess; import org.semanticweb.owl.align.AlignmentVisitor; diff --git a/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/WSInterface.java b/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/WSInterface.java index 84fe470faff23a06017fc800da9eba1f63a2ec7e..6e7a393bef8f9789784d9f06b7961e6ab32b58f9 100644 --- a/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/WSInterface.java +++ b/plugins/webcontent/src/fr/inrialpes/exmo/align/plugin/webcontent/WSInterface.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rh�ne-Alpes, 2007-2008, 2010 + * Copyright (C) INRIA, 2007-2008, 2010 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -43,7 +43,6 @@ import java.util.zip.ZipInputStream; import javax.swing.JOptionPane; -import org.semanticweb.owl.align.Parameters; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -96,7 +95,7 @@ public class WSInterface { String answer = null; try { - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -144,7 +143,7 @@ public class WSInterface { try { // Read parameters - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); params.setParameter( "command","trim"); @@ -192,7 +191,7 @@ public class WSInterface { try { // Read parameters - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); params.setParameter( "command","list"); @@ -233,7 +232,7 @@ public class WSInterface { try { // Read parameters - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); params.setParameter( "command","find"); @@ -271,7 +270,7 @@ public class WSInterface { try { // Read parameters - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -321,7 +320,7 @@ public class WSInterface { //System.out.println("Uri 1="+ onto1); //System.out.println("Uri 2="+ onto2); - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -375,7 +374,7 @@ public class WSInterface { //retrieve alignment for storing in OWL file - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -387,7 +386,7 @@ public class WSInterface { try { // Read parameters - //Parameters params = ws.readParameters( aservArgRetrieve ); + //BasicParameters params = ws.readParameters( aservArgRetrieve ); // Create the SOAP message String message = createMessage( params ); @@ -434,7 +433,7 @@ public class WSInterface { //retrieve alignment for storing in OWL file - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -446,7 +445,7 @@ public class WSInterface { try { // Read parameters - //Parameters params = ws.readParameters( aservArgRetrieve ); + //BasicParameters params = ws.readParameters( aservArgRetrieve ); // Create the SOAP message String message = createMessage( params ); @@ -480,7 +479,7 @@ public class WSInterface { public String render(String alignId, String method) { - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -492,7 +491,7 @@ public class WSInterface { try { // Read parameters - //Parameters params = ws.readParameters( aservArgRetrieve ); + //BasicParameters params = ws.readParameters( aservArgRetrieve ); // Create the SOAP message String message = createMessage( params ); @@ -528,7 +527,7 @@ public class WSInterface { //retrieve alignment for displaying - Parameters params = new BasicParameters(); + BasicParameters params = new BasicParameters(); params.setParameter( "host", HOST ); //params.setParameter( "http", PORT ); //params.setParameter( "wsdl", WSDL ); @@ -540,7 +539,7 @@ public class WSInterface { try { // Read parameters - //Parameters params = ws.readParameters( aservArgRetrieve ); + //BasicParameters params = ws.readParameters( aservArgRetrieve ); // Create the SOAP message String message = createMessage( params ); @@ -734,7 +733,7 @@ public class WSInterface { } - public String createMessage( Parameters params ) throws Exception { + public String createMessage( BasicParameters params ) throws Exception { String messageBegin = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\'http://schemas.xmlsoap.org/soap/envelope/\' " + "xmlns:xsi=\'http://www.w3.org/1999/XMLSchema-instance\' " + "xmlns:xsd=\'http://www.w3.org/1999/XMLSchema\'>" + @@ -879,7 +878,7 @@ public class WSInterface { return message; } - public String sendMessage( String message, Parameters param ) { + public String sendMessage( String message, BasicParameters param ) { // Create the connection byte[] b = message.getBytes(); @@ -935,7 +934,7 @@ public class WSInterface { return answer; } - public String sendFile( String message, Parameters param ) { + public String sendFile( String message, BasicParameters param ) { // Create the connection //byte[] b = message.getBytes(); diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java index 46894fba4ed8797ea15584d9197db3356dcea447..08a2143736bb2227617e81366d97f84326b4d3bd 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java @@ -28,6 +28,7 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.Collections; import java.util.Collection; +import java.util.Properties; import java.util.List; import java.util.Set; import java.util.ArrayList; @@ -41,7 +42,6 @@ import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.AlignmentProcess; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.ontowrap.Ontology; import fr.inrialpes.exmo.ontowrap.BasicOntology; @@ -115,8 +115,8 @@ public class BasicAlignment implements Alignment { } } - public static Parameters getParameters() { - return (Parameters)null; + public static Properties getParameters() { + return (Properties)null; } public int nbCells() { @@ -188,7 +188,7 @@ public class BasicAlignment implements Alignment { return extensions.getExtension( uri, label ); }; - public Parameters getXNamespaces(){ return namespaces; } + public BasicParameters getXNamespaces(){ return namespaces; } public void setXNamespace( String label, String uri ) { namespaces.setParameter( label, uri ); diff --git a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java index 84d82275e2f42575de35f6fb41935edb03422410..00a51037071224bcc68b49bb211b5bc9bbcca2a5 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java @@ -54,6 +54,10 @@ import org.semanticweb.owl.align.Parameters; * But propertyNames returns Enumeration and not Enumeration<String> * Using keySet will not change anything, because it will be Set<Object> * Java 6 introduces Set<String> stringPropertyNames() !! + * + * [JE:2010] This class implements Parameters for compatibility purposes. + * Parameters is only "morally" deprecated in the Alignment API, but it is + * not used anymore. * * @author Jérôme Euzenat * @version $Id$ @@ -63,9 +67,6 @@ public class BasicParameters extends Properties implements Parameters, Cloneable static final long serialVersionUID = 400L; - /** The list of unlinked out XML_Port */ - //Hashtable<String,Object> parameters = null; - public BasicParameters() {} @SuppressWarnings( "unchecked" ) @@ -77,24 +78,19 @@ public class BasicParameters extends Properties implements Parameters, Cloneable } public void setParameter( String name, String value ){ - //parameters.put(name,value); setProperty( name, value ); } public void unsetParameter( String name ){ - //parameters.remove(name); setProperty( name, (String)null ); } - // JE2009: returns a string... public String getParameter( String name ){ - //return parameters.get(name); return getProperty( name ); } @SuppressWarnings( "unchecked" ) public Enumeration<String> getNames(){ - //return parameters.keys(); return (Enumeration<String>)propertyNames(); //[W:unchecked] } @@ -125,11 +121,11 @@ public class BasicParameters extends Properties implements Parameters, Cloneable } } - public static Parameters read( String filename ){ - return read(new BasicParameters(), filename); + public static BasicParameters read( String filename ){ + return read( new BasicParameters(), filename ); } - public static Parameters read( Parameters p, String filename ){ + public static BasicParameters read( BasicParameters p, String filename ){ try { // open the stream DocumentBuilderFactory docBuilderFactory = diff --git a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java index 0e9844e27c5e1cf7dfac2ebcb748d43545e9de8f..d9dd9f46e5ae828d2e45e6eb309b677bf3f586f6 100644 --- a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java @@ -38,7 +38,6 @@ import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.ontowrap.OntologyFactory; import fr.inrialpes.exmo.ontowrap.Ontology; diff --git a/src/fr/inrialpes/exmo/align/impl/ObjectCell.java b/src/fr/inrialpes/exmo/align/impl/ObjectCell.java index b78e7fe9512680f4d0bb4a6c0b443340c5736a57..42bf209fc81eb9eacef492eb1cd07758ec0e4e30 100644 --- a/src/fr/inrialpes/exmo/align/impl/ObjectCell.java +++ b/src/fr/inrialpes/exmo/align/impl/ObjectCell.java @@ -31,7 +31,6 @@ import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.ontowrap.LoadedOntology; import fr.inrialpes.exmo.ontowrap.OntowrapException; diff --git a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java index 48f27c3d7e9aac20aabd57a3801c0ec51205482f..7352438ad369096af1f59571a91681980ecbd0ef 100644 --- a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java @@ -42,7 +42,6 @@ import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.ontowrap.Ontology; diff --git a/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java b/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java index 006014086442796a4ed4a79ee9853b11da53be90..0c0bb4fb51cf8f92da4950ee4a2b80abdc496eed 100644 --- a/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java @@ -31,13 +31,11 @@ import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.ontowrap.Ontology; import fr.inrialpes.exmo.align.impl.Annotations; import fr.inrialpes.exmo.align.impl.Namespace; import fr.inrialpes.exmo.align.impl.BasicAlignment; -import fr.inrialpes.exmo.align.impl.BasicParameters; import fr.inrialpes.exmo.align.impl.Extensions; /** diff --git a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java index 7123844b2b564611516fcf2d98a237a0e3bc7ca2..bc7e7c1a57ac64226467961db69e33b0f4438733 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA, 2009 + * Copyright (C) INRIA, 2009-2010 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -23,7 +23,6 @@ package fr.inrialpes.exmo.align.impl.eval; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.Cell; -import org.semanticweb.owl.align.Parameters; import org.semanticweb.owl.align.Evaluator; import fr.inrialpes.exmo.align.impl.BasicEvaluator; @@ -35,6 +34,7 @@ import fr.inrialpes.exmo.align.impl.eval.PRecEvaluator; import fr.inrialpes.exmo.iddl.IDDLReasoner; import fr.inrialpes.exmo.iddl.conf.Semantics; +import java.util.Properties; import java.util.Enumeration; import java.util.Iterator; import java.util.Set; @@ -94,8 +94,8 @@ public class SemPRecEvaluator //extends BasicEvaluator * * This takes semantivs as a parameter which should be a litteral of fr.inrialpes.exmo.iddl.conf.Semantics */ - public double eval( Parameters params, Object cache ) throws AlignmentException { - init( params.getParameter( "semantics" ) ); + public double eval( Properties params, Object cache ) throws AlignmentException { + init( params.getProperty( "semantics" ) ); nbfound = align2.nbCells(); nbexpected = align1.nbCells(); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java index 474df9cb5c9af6c9b16db933e635ae8225eeb33c..f35aae4c3cf27a34580b44385f254904a4e73346 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java @@ -30,11 +30,9 @@ import org.semanticweb.owl.align.Visitable; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.AlignmentException; -import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.align.impl.Annotations; import fr.inrialpes.exmo.align.impl.Namespace; -import fr.inrialpes.exmo.align.impl.BasicParameters; import fr.inrialpes.exmo.align.impl.BasicAlignment; import fr.inrialpes.exmo.ontowrap.LoadedOntology; diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java index d2c6cad3b55efaea1cc219db6211ea24cabd616d..9432c97a8abd7d12e4b95ce63662e790d90809f2 100755 --- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java +++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java @@ -2,7 +2,7 @@ * $Id$ * * Copyright (C) Orange R&D, 2006-2007 - * Copyright (C) INRIA, 2006-2007, 2009 + * Copyright (C) INRIA, 2006-2007, 2009-2010 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -29,8 +29,6 @@ import jade.wrapper.AgentContainer; import jade.wrapper.AgentController; import jade.wrapper.ControllerException; -import org.semanticweb.owl.align.Parameters; - import fr.inrialpes.exmo.align.service.AServException; import fr.inrialpes.exmo.align.service.AServProtocolManager; import fr.inrialpes.exmo.align.service.AlignmentServiceProfile; diff --git a/src/org/semanticweb/owl/align/Parameters.java b/src/org/semanticweb/owl/align/Parameters.java index ffd443100fe5539174014bf7031f561e144e8ee7..7d12208bbf869bd7f8434ae1da96cc825b5c74d3 100644 --- a/src/org/semanticweb/owl/align/Parameters.java +++ b/src/org/semanticweb/owl/align/Parameters.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA, 2004, 2008, 2009 + * Copyright (C) INRIA, 2004, 2008, 2009-2010 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -36,17 +36,17 @@ import java.util.Enumeration; * * @author Jérôme Euzenat * @version $Id$ + * + * This interface is morally deprecated in version 4.0 to the advantage of java.util.Properties + * //@deprecated */ public interface Parameters { - //public void setParameter(String name, Object value); public void setParameter(String name, String value); public void unsetParameter(String name); public String getParameter(String name); public Enumeration<String> getNames(); public void write(); - //public static Parameters read(String filename); - //public static Parameters read(Parameters params, String filename); } diff --git a/test/src/BasicAlignmentTest.java b/test/src/BasicAlignmentTest.java index 36ae74385315e9363464b84b26f9beb2a592c4f0..ffece5dcb4391ca0134c3844eb643bfc6243c152 100644 --- a/test/src/BasicAlignmentTest.java +++ b/test/src/BasicAlignmentTest.java @@ -1,7 +1,8 @@ /* * $Id$ * - * Copyright (C) INRIA, 2008-2009 + * Copyright (C) INRIA, 2008-2010 + * Copyright (C) FZI/Juergen Bock, 2010 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -25,18 +26,26 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertNull; import org.testng.annotations.BeforeClass; +import org.testng.annotations.AfterClass; import org.testng.annotations.Configuration; import org.testng.annotations.Test; //import org.testng.annotations.*; +import java.net.URI; + import fr.inrialpes.exmo.align.impl.BasicAlignment; +import fr.inrialpes.exmo.align.impl.BasicCell; +import fr.inrialpes.exmo.align.impl.BasicRelation; import fr.inrialpes.exmo.align.impl.URIAlignment; import fr.inrialpes.exmo.align.parser.AlignmentParser; import org.semanticweb.owl.align.Alignment; +import org.semanticweb.owl.align.Cell; +import org.semanticweb.owl.align.Relation; import org.semanticweb.owl.align.AlignmentException; public class BasicAlignmentTest { + private Alignment alignment = null; @BeforeClass(groups = { "full", "raw" }) @@ -62,5 +71,60 @@ public class BasicAlignmentTest { assertEquals( result.nbCells(), 1, "Alignment should contain 1 cell" ); } + private static Cell cell1, cell2, cell3, cell4, cell5; + /** + * @throws java.lang.Exception + */ + @BeforeClass(groups = { "full", "raw" }) + public static void setUpBeforeClass() throws Exception { + URI cls1 = URI.create( "http://example.org/test#cls1" ); + URI cls2 = URI.create( "http://example.org/test#cls2" ); + URI cls3 = URI.create( "http://example.org/test#cls3" ); + Relation rel1 = new BasicRelation( "=" ); + Relation rel2 = new BasicRelation( "<" ); + cell1 = new BasicCell( "1", cls1, cls2, rel1, 0); + cell2 = new BasicCell( "2", cls1, cls2, rel1, 0); + cell3 = new BasicCell( "3", cls1, cls3, rel1, 0); + cell4 = new BasicCell( "4", cls1, cls2, rel2, 0); + cell5 = new BasicCell( "5", cls1, cls2, rel1, .5); + } + + /** + * @throws java.lang.Exception + */ + @AfterClass(groups = { "raw", "full" }, alwaysRun = true ) + public static void tearDownAfterClass() throws Exception { + cell1 = cell2 = cell3 = cell4 = cell5 = null; + } + + @Test(groups = { "full", "raw" }) + public void testEquals() { + assertTrue( cell1.equals( cell1 ) ); // 1 == 1 + assertTrue( cell1.equals( cell2 ) ); // 1 == 2 + assertTrue( cell2.equals( cell1 ) ); // 2 == 1 + assertTrue( !cell1.equals( null ) ); // 1 != null + assertTrue( !cell1.equals( cell3 ) ); // 1 != 3 + assertTrue( !cell1.equals( cell4 ) ); // 1 != 4 + assertTrue( !cell1.equals( cell5 ) ); // 1 != 5 + } + + @Test(groups = { "full", "raw" }) + public void testEqualsObject() { + assertTrue( cell1.equals( (Object) cell1 ) ); // 1 == 1 + assertTrue( cell1.equals( (Object) cell2 ) ); // 1 == 2 + assertTrue( cell2.equals( (Object) cell1 ) ); // 2 == 1 + assertTrue( !cell1.equals( (Object) null ) ); // 1 != null + assertTrue( !cell1.equals( (Object) cell3 ) ); // 1 != 3 + assertTrue( !cell1.equals( (Object) cell4 ) ); // 1 != 4 + assertTrue( !cell1.equals( (Object) cell5 ) ); // 1 != 5 + } + + @Test(groups = { "full", "raw" }) + public void testHashCodeEquals() { + assertTrue( cell1.equals( cell2 ) && cell1.hashCode() == cell2.hashCode() ); + assertTrue( cell1.equals( cell1 ) && cell1.hashCode() == cell1.hashCode() ); + assertTrue( cell2.equals( cell1 ) && cell2.hashCode() == cell1.hashCode() ); + } + }