001/*
002 * $Id: ModuleListTest.java 3789 2011-10-01 18:54:43Z kredel $
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
019
020
021/**
022 * ModuleList tests with JUnit.
023 * @author Heinz Kredel
024 */
025
026public class ModuleListTest 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>ModuleListTest</CODE> object.
037 * @param name String.
038 */
039   public ModuleListTest(String name) {
040          super(name);
041   }
042
043/**
044 * suite.
045 * @return a test suite.
046 */
047public static Test suite() {
048     TestSuite suite= new TestSuite(ModuleListTest.class);
049     return suite;
050   }
051
052   //private final static int bitlen = 100;
053
054   ModuleList<BigRational> m;
055   PolynomialList<BigRational> p;
056
057   GenPolynomial<BigRational> a;
058   GenPolynomial<BigRational> b;
059   GenPolynomial<BigRational> c;
060   GenPolynomial<BigRational> d;
061   GenPolynomial<BigRational> e;
062
063   BigRational cfac;
064   GenPolynomialRing<BigRational> pfac;
065
066   int rl = 4; 
067   int kl = 4;
068   int ll = 4;
069   int el = 5;
070   float q = 0.5f;
071
072   protected void setUp() {
073       a = b = c = d = e = null;
074       cfac = new BigRational(1);
075       TermOrder tord = new TermOrder();
076       pfac = new GenPolynomialRing<BigRational>(cfac,rl,tord);
077       m = null;
078       p = null;
079   }
080
081   protected void tearDown() {
082       a = b = c = d = e = null;
083       m = null;
084       p = null;
085   }
086
087
088/**
089 * Test constructor and toString.
090 * 
091 */
092 public void testConstructor() {
093     p = new PolynomialList<BigRational>(pfac,(List<GenPolynomial<BigRational>>)null);
094     assertTrue("p = 0", p.list == null);
095
096     m = new ModuleList<BigRational>(pfac,(List<List<GenPolynomial<BigRational>>>)null);
097     assertTrue("m = 0", m.list == null);
098 }
099
100
101/**
102 * Test polynomial list.
103 * 
104 */
105 public void testPolynomialList() {
106     List<GenPolynomial<BigRational>> l 
107         = new ArrayList<GenPolynomial<BigRational>>();
108     for (int i = 0; i < 7; i++) {
109         a = pfac.random(kl, ll+i, el, q );
110         if ( a.isZERO() || a.isONE() ) {
111             continue;
112         }
113         assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
114         assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
115         assertTrue(" not isONE( a"+i+" )", !a.isONE() );
116         l.add( a );
117     }
118     p = new PolynomialList<BigRational>(pfac,l);
119     //System.out.println("p = "+p);
120
121     assertTrue("p == p", p.equals(p) );
122     assertEquals("p.length", 7, p.list.size() );
123 }
124
125
126/**
127 * Test module list.
128 * 
129 */
130 public void testModuleList() {
131     List<List<GenPolynomial<BigRational>>> l 
132         = new ArrayList<List<GenPolynomial<BigRational>>>();
133     for (int i = 0; i < 4; i++) {
134         List<GenPolynomial<BigRational>> r 
135             = new ArrayList<GenPolynomial<BigRational>>();
136         for ( int j = 0; j < 3; j++ ) {
137             a = pfac.random(kl, ll, el, q );
138             if ( a.isZERO() || a.isONE() ) {
139                 continue;
140             }
141             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
142             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
143             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
144             r.add( a );
145         }
146         l.add( r );
147     }
148     m = new ModuleList<BigRational>(pfac,l);
149     //System.out.println("m = "+m);
150     assertTrue("m == m", m.equals(m) );
151     assertEquals("m.length", 4, m.list.size() );
152 }
153
154
155/**
156 * Test module and polynomial list.
157 * 
158 */
159 public void testModulePolynomialList() {
160     List<List<GenPolynomial<BigRational>>> l 
161         = new ArrayList<List<GenPolynomial<BigRational>>>();
162     for (int i = 0; i < 4; i++) {
163         List<GenPolynomial<BigRational>> r 
164             = new ArrayList<GenPolynomial<BigRational>>();
165         for ( int j = 0; j < 3; j++ ) {
166             a = pfac.random(kl, ll, el, q );
167             if ( a.isZERO() || a.isONE() ) {
168                 continue;
169             }
170             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
171             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
172             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
173             r.add( a );
174         }
175         l.add( r );
176     }
177     m = new ModuleList<BigRational>(pfac,l);
178     //System.out.println("m = "+m);
179     assertTrue("m == m", m.equals(m) );
180     assertEquals("m.length", 4, m.list.size() );
181
182     p = m.getPolynomialList();
183     //System.out.println("p = "+p);
184     assertTrue("p == p", p.equals(p) );
185     assertEquals("p.length", 4, p.list.size() );
186 }
187
188
189/**
190 * Test module and polynomial and module list.
191 * 
192 */
193 public void testModulePolynomialModuleList() {
194     List<List<GenPolynomial<BigRational>>> l 
195         = new ArrayList<List<GenPolynomial<BigRational>>>();
196     for (int i = 0; i < 4; i++) {
197         List<GenPolynomial<BigRational>> r 
198             = new ArrayList<GenPolynomial<BigRational>>();
199         for ( int j = 0; j < 3; j++ ) {
200             a = pfac.random(kl, ll, el, q );
201             if ( a.isZERO() || a.isONE() ) {
202                 continue;
203             }
204             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
205             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
206             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
207             r.add( a );
208         }
209         l.add( r );
210     }
211     m = new ModuleList<BigRational>(pfac,l);
212     //System.out.println("m = "+m);
213     assertTrue("m == m", m.equals(m) );
214     assertEquals("m.length", 4, m.list.size() );
215
216     p = m.getPolynomialList();
217     //System.out.println("p = "+p);
218     assertTrue("p == p", p.equals(p) );
219     assertEquals("p.length", 4, p.list.size() );
220
221     ModuleList<BigRational> m2 = null;
222     m2 = p.getModuleList( 3 );
223     //System.out.println("m2 = "+m2);
224     assertTrue("m2 == m2", m2.equals(m2) );
225     assertEquals("m2.length", 4, m2.list.size() );
226
227     assertTrue("m == m2", m.equals(m2) );
228 }
229
230
231/**
232 * Test module and polynomial and module and polynomial list.
233 * 
234 */
235 public void testModulePolynomialModuleListPolynomial() {
236     List<List<GenPolynomial<BigRational>>> l 
237         = new ArrayList<List<GenPolynomial<BigRational>>>();
238     for (int i = 0; i < 4; i++) {
239         List<GenPolynomial<BigRational>> r 
240             = new ArrayList<GenPolynomial<BigRational>>();
241         for ( int j = 0; j < 3; j++ ) {
242             a = pfac.random(kl, ll, el, q );
243             if ( a.isZERO() || a.isONE() ) {
244                 continue;
245             }
246             assertTrue("length( a"+i+" ) <> 0", a.length() >= 0);
247             assertTrue(" not isZERO( a"+i+" )", !a.isZERO() );
248             assertTrue(" not isONE( a"+i+" )", !a.isONE() );
249             r.add( a );
250         }
251         l.add( r );
252     }
253     m = new ModuleList<BigRational>(pfac,l);
254     //System.out.println("m = "+m);
255     assertTrue("m == m", m.equals(m) );
256     assertEquals("m.length", 4, m.list.size() );
257
258     p = m.getPolynomialList();
259     //System.out.println("p = "+p);
260     assertTrue("p == p", p.equals(p) );
261     assertEquals("p.length", 4, p.list.size() );
262
263     ModuleList<BigRational> m2 = null;
264     m2 = p.getModuleList( 3 );
265     //System.out.println("m2 = "+m2);
266     assertTrue("m2 == m2", m2.equals(m2) );
267     assertEquals("m2.length", 4, m2.list.size() );
268
269     assertTrue("m == m2", m.equals(m2) );
270
271     PolynomialList<BigRational> p2 = null;
272     p2 = m2.getPolynomialList();
273     //System.out.println("p2 = "+p2);
274     assertTrue("p2 == p2", p2.equals(p2) );
275     assertEquals("p2.length", 4, p2.list.size() );
276
277     assertTrue("p == p2", p.list.equals(p2.list) );
278 }
279
280}