001/*
002 * $Id: ModGroebnerBaseTest.java 3789 2011-10-01 18:54:43Z kredel $
003 */
004
005package edu.jas.gbmod;
006
007import java.util.List;
008import java.util.ArrayList;
009
010import junit.framework.Test;
011import junit.framework.TestCase;
012import junit.framework.TestSuite;
013
014import org.apache.log4j.BasicConfigurator;
015//import org.apache.log4j.Logger;
016
017
018//import edu.jas.structure.RingElem;
019
020import edu.jas.arith.BigRational;
021
022import edu.jas.poly.GenPolynomial;
023import edu.jas.poly.GenPolynomialRing;
024import edu.jas.poly.ModuleList;
025import edu.jas.poly.PolynomialList;
026import edu.jas.poly.TermOrder;
027
028
029
030/**
031 * ModGroebnerBase tests with JUnit.
032 * @author Heinz Kredel.
033 */
034
035public class ModGroebnerBaseTest extends TestCase {
036
037    //private static final Logger logger = Logger.getLogger(ModGroebnerBaseTest.class);
038
039/**
040 * main.
041 */
042   public static void main (String[] args) {
043          BasicConfigurator.configure();
044          junit.textui.TestRunner.run( suite() );
045   }
046
047/**
048 * Constructs a <CODE>ModGroebnerBaseTest</CODE> object.
049 * @param name String.
050 */
051   public ModGroebnerBaseTest(String name) {
052          super(name);
053   }
054
055/**
056 * suite.
057 */ 
058 public static Test suite() {
059     TestSuite suite= new TestSuite(ModGroebnerBaseTest.class);
060     return suite;
061   }
062
063   GenPolynomialRing<BigRational> fac;
064
065   PolynomialList<BigRational> F;
066   List<GenPolynomial<BigRational>> G;
067
068   GenPolynomial<BigRational> a;
069   GenPolynomial<BigRational> b;
070   GenPolynomial<BigRational> c;
071   GenPolynomial<BigRational> d;
072   GenPolynomial<BigRational> e;
073
074   TermOrder tord;
075
076   List<List<GenPolynomial<BigRational>>> L;
077   List<GenPolynomial<BigRational>> V;
078   ModuleList<BigRational> M;
079   ModuleList<BigRational> N;
080
081   ModGroebnerBase<BigRational> mbb;
082
083   int rl = 3; //4; //3; 
084   int kl = 8;
085   int ll = 5;
086   int el = 2;
087   float q = 0.2f; //0.4f
088
089   protected void setUp() {
090       BigRational coeff = new BigRational(9);
091       tord = new TermOrder();
092       fac = new GenPolynomialRing<BigRational>(coeff,rl,tord);
093       mbb = new ModGroebnerBaseAbstract<BigRational>(coeff);
094       a = b = c = d = e = null;
095
096       do {
097          a = fac.random(kl, ll, el, q );
098          b = fac.random(kl, ll, el, q );
099          c = fac.random(kl, ll, el, q );
100          d = fac.random(kl, ll, el, q );
101       } while ( a.isZERO() || b.isZERO() || c.isZERO() || d.isZERO() );
102       e = d; //fac.random(kl, ll, el, q );
103   }
104
105   protected void tearDown() {
106       mbb = null;
107       a = b = c = d = e = null;
108       fac = null;
109       tord = null;
110   }
111
112
113/**
114 * Test sequential GBase.
115 * 
116 */
117 public void testSequentialModGB() {
118
119     L = new ArrayList<List<GenPolynomial<BigRational>>>();
120
121     assertTrue("not isZERO( a )", !a.isZERO() );
122     V = new ArrayList<GenPolynomial<BigRational>>();
123     V.add(a); V.add(fac.getZERO()); V.add(fac.getONE());
124     L.add(V);
125     M = new ModuleList<BigRational>(fac,L);
126     assertTrue("isGB( { (a,0,1) } )", mbb.isGB(M) );
127
128     N = mbb.GB( M );
129     assertTrue("isGB( { (a,0,1) } )", mbb.isGB(N) );
130
131     assertTrue("not isZERO( b )", !b.isZERO() );
132     V = new ArrayList<GenPolynomial<BigRational>>();
133     V.add(b); V.add(fac.getONE()); V.add(fac.getZERO());
134     L.add(V);
135     M = new ModuleList<BigRational>(fac,L);
136     //System.out.println("L = " + L.size() );
137
138     N = mbb.GB( M );
139     assertTrue("isDIRPGB( { (a,0,1),(b,1,0) } )", mbb.isGB(N) );
140     //System.out.println("N = " + N );
141
142     assertTrue("not isZERO( c )", !c.isZERO() );
143     V = new ArrayList<GenPolynomial<BigRational>>();
144     V.add(c); V.add(fac.getZERO()); V.add(fac.getZERO());
145     L.add(V);
146     M = new ModuleList<BigRational>(fac,L);
147     //System.out.println("L = " + L.size() );
148
149     N = mbb.GB( M );
150     assertTrue("isDIRPGB( { (a,),(b,),(c,) } )", mbb.isGB(N) );
151     //System.out.println("N = " + N );
152
153     assertTrue("not isZERO( d )", !d.isZERO() );
154     V = new ArrayList<GenPolynomial<BigRational>>();
155     V.add(d); V.add(fac.getZERO()); V.add(fac.getZERO());
156     L.add(V);
157     M = new ModuleList<BigRational>(fac,L);
158     //System.out.println("L = " + L.size() );
159
160     N = mbb.GB( M );
161     assertTrue("isDIRPGB( { (a,b,c,d) } )", mbb.isGB(N) );
162     //System.out.println("N = " + N );
163
164 }
165
166}