001 /*
002 * $Id: PairListTest.java 3388 2010-12-04 12:05:32Z kredel $
003 */
004
005 package edu.jas.gb;
006
007
008 import java.util.List;
009 import java.util.ArrayList;
010 import java.io.IOException;
011 import java.io.Reader;
012 import java.io.StringReader;
013
014 import junit.framework.Test;
015 import junit.framework.TestCase;
016 import junit.framework.TestSuite;
017
018 import org.apache.log4j.BasicConfigurator;
019 //import org.apache.log4j.Logger;
020
021 import edu.jas.arith.BigRational;
022 import edu.jas.gb.GroebnerBase;
023 import edu.jas.poly.GenPolynomial;
024 import edu.jas.poly.GenPolynomialRing;
025 import edu.jas.poly.GenPolynomialTokenizer;
026 import edu.jas.poly.PolynomialList;
027
028
029 /**
030 * Groebner base sequential tests with JUnit.
031 * @author Heinz Kredel.
032 */
033
034 public class PairListTest extends TestCase {
035
036
037 /**
038 * main
039 */
040 public static void main (String[] args) {
041 BasicConfigurator.configure();
042 junit.textui.TestRunner.run( suite() );
043 }
044
045 /**
046 * Constructs a <CODE>PairListTest</CODE> object.
047 * @param name String.
048 */
049 public PairListTest(String name) {
050 super(name);
051 }
052
053 /**
054 * suite.
055 */
056 public static Test suite() {
057 TestSuite suite= new TestSuite(PairListTest.class);
058 return suite;
059 }
060
061 GenPolynomialRing<BigRational> fac;
062
063 List<GenPolynomial<BigRational>> L;
064 PolynomialList<BigRational> F;
065 List<GenPolynomial<BigRational>> G;
066
067 PairList<BigRational> pairlist;
068
069 GenPolynomial<BigRational> a;
070 GenPolynomial<BigRational> b;
071 GenPolynomial<BigRational> c;
072 GenPolynomial<BigRational> d;
073 GenPolynomial<BigRational> e;
074
075 int rl = 4; //4; //3;
076 int kl = 5;
077 int ll = 2;
078 int el = 4;
079 float q = 0.3f; //0.4f
080
081 protected void setUp() {
082 BigRational coeff = new BigRational(9);
083 fac = new GenPolynomialRing<BigRational>(coeff,rl);
084 a = b = c = d = e = null;
085 }
086
087 protected void tearDown() {
088 a = b = c = d = e = null;
089 fac = null;
090 }
091
092
093 /**
094 * Test and compare random OrderedPairlist and CriticalPairList.
095 */
096 public void testRandomPL() {
097 pairlist = new OrderedPairlist<BigRational>(fac);
098 //System.out.println("pairlist = " + pairlist);
099
100 CriticalPairList<BigRational> cpl = new CriticalPairList<BigRational>(fac);
101 //System.out.println("cpl = " + cpl);
102
103 L = new ArrayList<GenPolynomial<BigRational>>();
104 for ( int i = 0; i < 7; i++ ) {
105 a = fac.random(kl, ll, el, q );
106 if ( a.isZERO() ) {
107 continue;
108 }
109 pairlist.put(a);
110 cpl.put(a);
111 }
112 //System.out.println("pairlist = " + pairlist);
113 //System.out.println("cpl = " + cpl);
114
115 while ( pairlist.hasNext() && cpl.hasNext() ) {
116 Pair<BigRational> pair = pairlist.removeNext();
117 //System.out.println("pair = " + pair);
118 CriticalPair<BigRational> cpair = cpl.getNext();
119 //System.out.println("cpair = " + cpair);
120 if ( cpair != null ) {
121 cpl.update(cpair,fac.getZERO());
122 } else {
123 cpl.update();
124 }
125 if ( pair != null && cpair != null ) {
126 boolean t = (pair.i == cpair.i) && (pair.j == cpair.j);
127 assertTrue("pair == cpair ", t);
128 }
129 }
130 //System.out.println("pairlist = " + pairlist);
131 //System.out.println("cpl = " + cpl);
132 boolean t = pairlist.hasNext() || cpl.hasNext();
133 assertFalse("#pairlist == #cpl ", t);
134 }
135
136
137 /**
138 * Test and compare random OrderedPairlist and OrderedSyzPairlist.
139 */
140 public void testRandomSyzPL() {
141 pairlist = new OrderedPairlist<BigRational>(fac);
142 //System.out.println("pairlist = " + pairlist);
143
144 OrderedSyzPairlist<BigRational> spl = new OrderedSyzPairlist<BigRational>(fac);
145 //System.out.println("spl = " + spl);
146
147 L = new ArrayList<GenPolynomial<BigRational>>();
148 for ( int i = 0; i < 7; i++ ) {
149 a = fac.random(kl, ll, el, q );
150 if ( a.isZERO() ) {
151 continue;
152 }
153 pairlist.put(a);
154 spl.put(a);
155 }
156 //System.out.println("pairlist = " + pairlist);
157 //System.out.println("spl = " + spl);
158
159 while ( pairlist.hasNext() && spl.hasNext() ) {
160 Pair<BigRational> pair = pairlist.removeNext();
161 //System.out.println("pair = " + pair);
162 Pair<BigRational> spair = spl.removeNext();
163 //System.out.println("spair = " + spair);
164 if ( pair != null && spair != null ) {
165 boolean t = (pair.i == spair.i) && (pair.j == spair.j);
166 //not always true: assertTrue("pair == spair " + pair + ", " + spair, t);
167 }
168 }
169 //System.out.println("pairlist = " + pairlist);
170 //System.out.println("spl = " + spl);
171 boolean t = pairlist.hasNext() && spl.hasNext();
172 assertFalse("#pairlist == #spl ", t);
173 }
174
175 }