KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jgrapht > experimental > equivalence > EquivalenceGroupCreatorTest


1 /* ==========================================
2  * JGraphT : a free Java graph-theory library
3  * ==========================================
4  *
5  * Project Info: http://jgrapht.sourceforge.net/
6  * Project Creator: Barak Naveh (http://sourceforge.net/users/barak_naveh)
7  *
8  * (C) Copyright 2003-2006, by Barak Naveh and Contributors.
9  *
10  * This library is free software; you can redistribute it and/or modify it
11  * under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation; either version 2.1 of the License, or
13  * (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful, but
16  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18  * License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this library; if not, write to the Free Software Foundation,
22  * Inc.,
23  * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
24  */

25 /* -----------------
26  * EquivalenceGroupCreatorTest.java
27  * -----------------
28  * (C) Copyright 2005-2006, by Assaf Lehr and Contributors.
29  *
30  * Original Author: Assaf Lehr
31  * Contributor(s): -
32  *
33  * $Id: EquivalenceGroupCreatorTest.java 504 2006-07-03 02:37:26Z perfecthash $
34  *
35  * Changes
36  * -------
37  */

38 package org.jgrapht.experimental.equivalence;
39
40 import java.util.*;
41
42 import junit.framework.*;
43
44 import org.jgrapht.experimental.isomorphism.comparators.*;
45
46
47 /**
48  * @author Assaf
49  * @since Jul 22, 2005
50  */

51 public class EquivalenceGroupCreatorTest
52     extends TestCase
53 {
54
55     //~ Instance fields -------------------------------------------------------
56

57     // create the groups array as 0 to X (it)
58
final int INTEGER_ARRAY_SIZE = 25;
59
60     //~ Methods ---------------------------------------------------------------
61

62     /*
63      * @see TestCase#setUp()
64      */

65     protected void setUp()
66         throws Exception JavaDoc
67     {
68         super.setUp();
69     }
70
71     public void testUniformGroup()
72     {
73         // expecting two seperate groups , one with odd , one with even nubmers"
74
testOneComparator(new UniformEquivalenceComparator(), 1);
75
76         // " expecting 3 seperate groups , one for each mod3
77
testOneComparator(
78             new org.jgrapht.experimental.isomorphism.comparators.Mod3GroupComparator(),
79             3);
80     }
81
82     public void testOddEvenGroup()
83     {
84         // " expecting two seperate groups , one with odd , one with even
85
// nubmers");
86
testOneComparator(
87             new org.jgrapht.experimental.isomorphism.comparators.OddEvenGroupComparator(),
88             2);
89
90         // " expecting 3 seperate groups , one for each mod3");
91
testOneComparator(
92             new org.jgrapht.experimental.isomorphism.comparators.Mod3GroupComparator(),
93             3);
94     }
95
96     /**
97      * Using a chain of evenOdd(mod2) and mod3 comparator , should yield the 6
98      * groups , which are infact mod6 , examples:
99      * <li>mod2 = 0 , mod3 = 0 --> mod6=0 , like : 6 , 12
100      * <li>mod2 = 1 , mod3 = 0 --> mod6=1 , like : 7 , 13
101      * <li>
102      */

103     public void testComparatorChain()
104     {
105         EquivalenceComparatorChain<Integer JavaDoc, Object JavaDoc> comparatorChain =
106             new EquivalenceComparatorChainBase<Integer JavaDoc, Object JavaDoc>(
107                 new OddEvenGroupComparator());
108         comparatorChain.appendComparator(new Mod3GroupComparator());
109
110         // for (int i=0 ; i<INTEGER_ARRAY_SIZE ; i++)
111
// {
112
// System.out.println("hash of "+i+" =
113
// "+comparatorChain.equivalenceHashcode(integerArray[i], null));
114
//
115
//
116
// }
117
// expecting six seperate groups , with the different mod6 values");
118
testOneComparator(
119             comparatorChain,
120             6);
121     }
122
123     @SuppressWarnings JavaDoc("unchecked")
124     public void testComparatorChainSameComparatorTwice()
125     {
126         EquivalenceComparatorChain comparatorChain =
127             new EquivalenceComparatorChainBase(new OddEvenGroupComparator());
128         comparatorChain.appendComparator(new UniformEquivalenceComparator());
129         comparatorChain.appendComparator(new OddEvenGroupComparator());
130
131         // still expecting 2 groups "
132
testOneComparator(
133             comparatorChain,
134             2);
135     }
136
137     @SuppressWarnings JavaDoc("unchecked")
138     private void testOneComparator(
139         EquivalenceComparator comparator,
140         int expectedNumOfGroups)
141     {
142         ArrayList<Integer JavaDoc> integerArray =
143             new ArrayList<Integer JavaDoc>(INTEGER_ARRAY_SIZE);
144         for (int i = 0; i < INTEGER_ARRAY_SIZE; i++) {
145             integerArray.add(i);
146         }
147
148         EquivalenceSet [] eqGroupArray =
149             EquivalenceSetCreator.createEqualityGroupOrderedArray(
150                 integerArray,
151                 comparator,
152                 null);
153         assertEquals(expectedNumOfGroups, eqGroupArray.length);
154
155         // assert the group order size is sorted.
156
for (int i = 1; i < eqGroupArray.length; i++) {
157             EquivalenceSet set = eqGroupArray[i];
158             assertTrue(set.size() >= eqGroupArray[i - 1].size());
159         }
160         // System.out.println("\nTesting the EquivalenceSet[] returned from
161
// Integer["
162
// +INTEGER_ARRAY_SIZE+"] filled with the integers as the indexes. \n"
163
// + expectedResult);
164
// System.out.println("result size="+eqGroupArray.length);
165
// for (int i = 0; i < eqGroupArray.length; i++) {
166
// System.out.println(eqGroupArray[i]);
167
// }
168
}
169 }
170
Popular Tags