Revision: 830
          http://jwebunit.svn.sourceforge.net/jwebunit/?rev=830&view=rev
Author:   jevonwright
Date:     2010-04-02 03:42:16 +0000 (Fri, 02 Apr 2010)

Log Message:
-----------
adding an implementation of equals() and hashCode() for HtmlUnitElementImpl

Modified Paths:
--------------
    
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
    trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java
    
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java

Modified: 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
===================================================================
--- 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
 2010-03-17 00:25:09 UTC (rev 829)
+++ 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
 2010-04-02 03:42:16 UTC (rev 830)
@@ -214,4 +214,38 @@
        assertEquals(preceding.getAttribute("name"), "element_name");
     }
     
+    /**
+     * Test that {...@link IElement#equals(Object)} is implemented
+     * correctly.
+     * 
+     */
+    public void testIElementEquals() {
+       
+       // through getElementById
+       IElement container1 = getElementById("container");
+       
+       // through IElement.getElement
+       IElement span = getElementByXPath("//sp...@class='inline']");
+       IElement container2 = span.getElement("..");
+       
+       // through getByXPath
+       IElement container3 = null;
+       for (IElement e : getElementsByXPath("//div")) {
+               if ("container".equals(e.getAttribute("id"))) {
+                       container3 = e;
+               }
+       }
+       
+       // should have found all of these
+       assertNotNull(container1);
+       assertNotNull(container2);
+       assertNotNull(container3);
+       
+       // check equality
+       assertEquals(container1, container2);
+       assertEquals(container2, container3);
+       assertEquals(container1, container3);
+       
+    }
+    
 }

Modified: 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java
===================================================================
--- 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java    
    2010-03-17 00:25:09 UTC (rev 829)
+++ 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java    
    2010-04-02 03:42:16 UTC (rev 830)
@@ -89,4 +89,14 @@
         */
        public void setTextContent(String value);
        
+       /**
+        * Two {...@link IElement}s are equal if they 
+        * refer to the same element in the current page.
+        * 
+        * @param obj the object to compare
+        * @return <code>true</code> if the object is an {...@link IElement}, 
and refers to the same
+        *              element as this {...@link IElement}
+        */
+       public boolean equals(Object obj);
+       
 }

Modified: 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
===================================================================
--- 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
     2010-03-17 00:25:09 UTC (rev 829)
+++ 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
     2010-04-02 03:42:16 UTC (rev 830)
@@ -149,4 +149,29 @@
                }
        }
 
+       @Override
+       public int hashCode() {
+               final int prime = 31;
+               int result = 1;
+               result = prime * result + ((element == null) ? 0 : 
element.hashCode());
+               return result;
+       }
+
+       @Override
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (obj == null)
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+               final HtmlUnitElementImpl other = (HtmlUnitElementImpl) obj;
+               if (element == null) {
+                       if (other.element != null)
+                               return false;
+               } else if (!element.equals(other.element))
+                       return false;
+               return true;
+       }
+
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
JWebUnit-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jwebunit-development

Reply via email to