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