001/*
002 * $Id$
003 */
004
005package edu.jas.poly;
006
007import java.util.List;
008import java.util.ArrayList;
009
010import junit.framework.Test;
011import junit.framework.TestCase;
012import junit.framework.TestSuite;
013
014//import edu.jas.structure.RingElem;
015
016import edu.jas.arith.BigRational;
017
018//import edu.jas.poly.GenPolynomialRing;
019
020
021/**
022 * SolvableModuleList tests using JUnit.
023 * @author Heinz Kredel
024 */
025
026public class SolvableModuleListTest extends TestCase {
027
028/**
029 * main.
030 */
031   public static void main (String[] args) {
032          junit.textui.TestRunner.run( suite() );
033   }
034
035/**
036 * Constructs a <CODE>SolvableModuleListTest</CODE> object.
037 * @param name String.
038 */
039   public SolvableModuleListTest(String name) {
040          super(name);
041   }
042
043/**
044 * suite.
045 */ 
046 public static Test suite() {
047     TestSuite suite= new TestSuite(SolvableModuleListTest.class);
048     return suite;
049   }
050
051   //private final static int bitlen = 100;
052
053   ModuleList<BigRational> m;
054   PolynomialList<BigRational> p;
055
056   GenSolvablePolynomial<BigRational> a;
057   GenSolvablePolynomial<BigRational> b;
058   GenSolvablePolynomial<BigRational> c;
059   GenSolvablePolynomial<BigRational> d;
060   GenSolvablePolynomial<BigRational> e;
061
062   BigRational cfac;
063   GenSolvablePolynomialRing<BigRational> pfac;
064
065   int rl = 4; 
066   int kl = 4;
067   int ll = 4;
068   int el = 5;
069   float q = 0.5f;
070
071   protected void setUp() {
072       a = b = c = d = e = null;
073       cfac = new BigRational(1);
074       TermOrder tord = new TermOrder();
075       pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rl,tord);
076       m = null;
077       p = null;
078   }
079
080   protected void tearDown() {
081       a = b = c = d = e = null;
082       m = null;
083       p = null;
084   }
085
086
087/**
088 * Test constructor and toString.
089 * 
090 */
091 public void testConstructor() {
092     p = new PolynomialList<BigRational>(pfac,(List<GenPolynomial<BigRational>>)null);
093     assertTrue("p = 0", p.list == null);
094
095     m = new ModuleList<BigRational>(pfac,(List<List<GenPolynomial<BigRational>>>)null);
096     assertTrue("m = 0", m.list == null);
097 }
098
099
100/**
101 * Test polynomial list.
102 * 
103 */
104 public void testPolynomialList() {
105     List<GenPolynomial<BigRational>> l 
106         = new ArrayList<GenPolynomial<BigRational>>();
107     for (int i = 0; i < 7; i++) {
108         a = pfac.random(kl, ll+i, el, q );
109         assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
110         assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
111         assertTrue(" not isONE( a"+i+" )", !a.isONE() );
112         l.add( a );
113     }
114     p = new PolynomialList<BigRational>(pfac,l);
115     //System.out.println("p = "+p);
116
117     assertTrue("p == p", p.equals(p) );
118     assertEquals("p.length", 7, p.list.size() );
119 }
120
121
122/**
123 * Test module list.
124 * 
125 */
126 public void testModuleList() {
127     List<List<GenPolynomial<BigRational>>> l 
128         = new ArrayList<List<GenPolynomial<BigRational>>>();
129     for (int i = 0; i < 4; i++) {
130         List<GenPolynomial<BigRational>> r 
131             = new ArrayList<GenPolynomial<BigRational>>();
132         for ( int j = 0; j < 3; j++ ) {
133             a = pfac.random(kl, ll, el, q );
134             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
135             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
136             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
137             r.add( a );
138         }
139         l.add( r );
140     }
141     m = new ModuleList<BigRational>(pfac,l);
142     //System.out.println("m = "+m);
143     assertTrue("m == m", m.equals(m) );
144     assertEquals("m.length", 4, m.list.size() );
145 }
146
147
148/**
149 * Test module and polynomial list.
150 * 
151 */
152 public void testModulePolynomialList() {
153     List<List<GenPolynomial<BigRational>>> l 
154         = new ArrayList<List<GenPolynomial<BigRational>>>();
155     for (int i = 0; i < 4; i++) {
156         List<GenPolynomial<BigRational>> r 
157             = new ArrayList<GenPolynomial<BigRational>>();
158         for ( int j = 0; j < 3; j++ ) {
159             a = pfac.random(kl, ll, el, q );
160             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
161             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
162             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
163             r.add( a );
164         }
165         l.add( r );
166     }
167     m = new ModuleList<BigRational>(pfac,l);
168     //System.out.println("m = "+m);
169     assertTrue("m == m", m.equals(m) );
170     assertEquals("m.length", 4, m.list.size() );
171
172     p = m.getPolynomialList();
173     //System.out.println("p = "+p);
174     assertTrue("p == p", p.equals(p) );
175     assertEquals("p.length", 4, p.list.size() );
176 }
177
178
179/**
180 * Test module and polynomial and module list.
181 * 
182 */
183 public void testModulePolynomialModuleList() {
184     List<List<GenPolynomial<BigRational>>> l 
185         = new ArrayList<List<GenPolynomial<BigRational>>>();
186     for (int i = 0; i < 4; i++) {
187         List<GenPolynomial<BigRational>> r 
188             = new ArrayList<GenPolynomial<BigRational>>();
189         for ( int j = 0; j < 3; j++ ) {
190             a = pfac.random(kl, ll, el, q );
191             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
192             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
193             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
194             r.add( a );
195         }
196         l.add( r );
197     }
198     m = new ModuleList<BigRational>(pfac,l);
199     //System.out.println("m = "+m);
200     assertTrue("m == m", m.equals(m) );
201     assertEquals("m.length", 4, m.list.size() );
202
203     p = m.getPolynomialList();
204     //System.out.println("p = "+p);
205     assertTrue("p == p", p.equals(p) );
206     assertEquals("p.length", 4, p.list.size() );
207
208     ModuleList<BigRational> m2 = null;
209     m2 = p.getModuleList( 3 );
210     //System.out.println("m2 = "+m2);
211     assertTrue("m2 == m2", m2.equals(m2) );
212     assertEquals("m2.length", 4, m2.list.size() );
213
214     assertTrue("m == m2", m.equals(m2) );
215 }
216
217
218/**
219 * Test module and polynomial and module and polynomial list.
220 * 
221 */
222 public void testModulePolynomialModuleListPolynomial() {
223     List<List<GenPolynomial<BigRational>>> l 
224         = new ArrayList<List<GenPolynomial<BigRational>>>();
225     for (int i = 0; i < 4; i++) {
226         List<GenPolynomial<BigRational>> r 
227             = new ArrayList<GenPolynomial<BigRational>>();
228         for ( int j = 0; j < 3; j++ ) {
229             a = pfac.random(kl, ll, el, q );
230             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
231             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
232             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
233             r.add( a );
234         }
235         l.add( r );
236     }
237     m = new ModuleList<BigRational>(pfac,l);
238     //System.out.println("m = "+m);
239     assertTrue("m == m", m.equals(m) );
240     assertEquals("m.length", 4, m.list.size() );
241
242     p = m.getPolynomialList();
243     //System.out.println("p = "+p);
244     assertTrue("p == p", p.equals(p) );
245     assertEquals("p.length", 4, p.list.size() );
246
247     ModuleList<BigRational> m2 = null;
248     m2 = p.getModuleList( 3 );
249     //System.out.println("m2 = "+m2);
250     assertTrue("m2 == m2", m2.equals(m2) );
251     assertEquals("m2.length", 4, m2.list.size() );
252
253     assertTrue("m == m2", m.equals(m2) );
254
255     PolynomialList<BigRational> p2 = null;
256     p2 = m2.getPolynomialList();
257     //System.out.println("p2 = "+p2);
258     assertTrue("p2 == p2", p2.equals(p2) );
259     assertEquals("p2.length", 4, p2.list.size() );
260
261     assertTrue("p == p2", p.list.equals(p2.list) );
262 }
263
264
265/**
266 * Test module and polynomial and module and polynomial list
267 * with WeylRelations.
268 * 
269 */
270 public void testWeylModulePolynomialModuleListPolynomial() {
271     int rloc = 4;
272     pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rloc);
273
274     RelationGenerator<BigRational> wl = new WeylRelations<BigRational>();
275     wl.generate(pfac);
276     RelationTable table1 = pfac.table;
277     RelationTable table2 = null;
278     RelationTable table3 = null;
279     RelationTable table4 = null;
280     RelationTable table5 = null;
281     //System.out.println("table 1 = " + table1);
282     //System.out.println("ring = " + ring);
283
284     List<List<GenPolynomial<BigRational>>> l 
285         = new ArrayList<List<GenPolynomial<BigRational>>>();
286     for (int i = 0; i < 4; i++) {
287         List<GenPolynomial<BigRational>> r 
288             = new ArrayList<GenPolynomial<BigRational>>();
289         for ( int j = 0; j < 3; j++ ) {
290             a = pfac.random(kl, ll, el, q );
291             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
292             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
293             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
294             r.add( a );
295         }
296         l.add( r );
297     }
298     m = new ModuleList<BigRational>(pfac,l);
299     //System.out.println("m = "+m);
300     assertTrue("m == m", m.equals(m) );
301     assertEquals("m.length", 4, m.list.size() );
302
303     table2 = ((GenSolvablePolynomialRing<BigRational>)m.ring).table;
304     //System.out.println("table 2 = " + table2);
305     assertEquals("table1 == table2", table1, table2 );
306
307
308     p = m.getPolynomialList();
309     //System.out.println("p = "+p);
310     assertTrue("p == p", p.equals(p) );
311     assertEquals("p.length", 4, p.list.size() );
312
313     table3 = ((GenSolvablePolynomialRing<BigRational>)p.ring).table;
314     //System.out.println("table 3 = " + table3);
315
316     ModuleList<BigRational> m2 = null;
317     m2 = p.getModuleList( 3 );
318     //System.out.println("m2 = "+m2);
319     assertTrue("m2 == m2", m2.equals(m2) );
320     assertEquals("m2.length", 4, m2.list.size() );
321
322     assertTrue("m == m2", m.equals(m2) );
323
324     table4 = ((GenSolvablePolynomialRing<BigRational>)m2.ring).table;
325     //System.out.println("table 4 = " + table4);
326     assertEquals("table2 == table4", table2, table4 );
327     assertEquals("table1 == table4", table1, table4 );
328
329
330     PolynomialList<BigRational> p2 = null;
331     p2 = m2.getPolynomialList();
332     //System.out.println("p2 = "+p2);
333     assertTrue("p2 == p2", p2.equals(p2) );
334     assertEquals("p2.length", 4, p2.list.size() );
335
336     assertTrue("p == p2", p.list.equals(p2.list) );
337     table5 = ((GenSolvablePolynomialRing<BigRational>)p2.ring).table;
338     //System.out.println("table 5= " + table5);
339     assertEquals("table2 == table4", table3.table, table5.table );
340 }
341
342}