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 }