KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > tests > jfun > yan > tck > EqualsTestCase


1 package tests.jfun.yan.tck;
2
3 import junit.framework.TestCase;
4
5 import java.util.ArrayList JavaDoc;
6 import java.util.List JavaDoc;
7
8 /**
9  * This class tests objects for conformance with the equals() contract
10  * http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)
11  *
12  * @author Aslak Hellesøy
13  * @version $Revision: 1.1 $
14  */

15 public class EqualsTestCase extends TestCase {
16     public static interface Tester {
17         void compare(Object JavaDoc o1, Object JavaDoc o2);
18     }
19
20     private List JavaDoc objects = new ArrayList JavaDoc();
21
22     protected void setUp() throws Exception JavaDoc {
23         objects.add("hello");
24         objects.add("world");
25         objects.add("blah");
26     }
27
28     public void testSameObjectsShouldBeReflexive() {
29         testAll(objects.toArray(), new Tester(){
30             public void compare(Object JavaDoc o1, Object JavaDoc o2) {
31                 if(o1 == o2) {
32                     assertTrue("Should be reflexive", o1.equals(o2));
33                 }
34             }
35         });
36     }
37
38     public void testObjectsShouldBeSymetricallyEqual() {
39         testAll(objects.toArray(), new Tester(){
40             public void compare(Object JavaDoc o1, Object JavaDoc o2) {
41                 if(o1.equals(o2)) {
42                     assertTrue("Should be symmetric", o2.equals(o1));
43                 }
44             }
45         });
46     }
47
48     public void testEqualityShouldBeTransitive() {
49         testAll(objects.toArray(), new Tester(){
50             public void compare(Object JavaDoc o1, Object JavaDoc o2) {
51                 if(o1.equals(o2)) {
52                     assertTrue("Should be symmetric", o2.equals(o1));
53                 }
54             }
55         });
56     }
57
58     public void testAll(Object JavaDoc[] oa, Tester tester) {
59         for (int i = 0; i < oa.length; i++) {
60             Object JavaDoc o1 = oa[i];
61             for (int j = oa.length - 1; j >= 0; j--) {
62                 Object JavaDoc o2 = oa[j];
63                 tester.compare(o1, o2);
64             }
65         }
66     }
67
68 }
69
Popular Tags