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