001/* 002 * $Id$ 003 */ 004 005package edu.jas.poly; 006 007 008import java.util.ArrayList; 009import java.util.List; 010 011import edu.jas.arith.BigRational; 012 013import junit.framework.Test; 014import junit.framework.TestCase; 015import junit.framework.TestSuite; 016 017 018/** 019 * ModuleList tests with JUnit. 020 * @author Heinz Kredel 021 */ 022public class ModuleListTest extends TestCase { 023 024 025 /** 026 * main. 027 */ 028 public static void main(String[] args) { 029 junit.textui.TestRunner.run(suite()); 030 } 031 032 033 /** 034 * Constructs a <CODE>ModuleListTest</CODE> object. 035 * @param name String. 036 */ 037 public ModuleListTest(String name) { 038 super(name); 039 } 040 041 042 /** 043 * suite. 044 * @return a test suite. 045 */ 046 public static Test suite() { 047 TestSuite suite = new TestSuite(ModuleListTest.class); 048 return suite; 049 } 050 051 052 ModuleList<BigRational> m; 053 054 055 PolynomialList<BigRational> p; 056 057 058 GenPolynomial<BigRational> a, b, c, d, e; 059 060 061 BigRational cfac; 062 063 064 GenPolynomialRing<BigRational> pfac; 065 066 067 int rl = 4; 068 069 070 int kl = 4; 071 072 073 int ll = 4; 074 075 076 int el = 5; 077 078 079 float q = 0.5f; 080 081 @Override 082 protected void setUp() { 083 a = b = c = d = e = null; 084 cfac = new BigRational(1); 085 TermOrder tord = new TermOrder(); 086 pfac = new GenPolynomialRing<BigRational>(cfac, rl, tord); 087 m = null; 088 p = null; 089 } 090 091 092 @Override 093 protected void tearDown() { 094 a = b = c = d = e = null; 095 m = null; 096 p = null; 097 } 098 099 100 /** 101 * Test constructor and toString. 102 */ 103 public void testConstructor() { 104 p = new PolynomialList<BigRational>(pfac, (List<GenPolynomial<BigRational>>) null); 105 assertTrue("p = 0", p.list == null); 106 107 m = new ModuleList<BigRational>(pfac, (List<List<GenPolynomial<BigRational>>>) null); 108 assertTrue("m = 0", m.list == null); 109 } 110 111 112 /** 113 * Test polynomial list. 114 */ 115 public void testPolynomialList() { 116 List<GenPolynomial<BigRational>> l = new ArrayList<GenPolynomial<BigRational>>(); 117 for (int i = 0; i < 7; i++) { 118 a = pfac.random(kl, ll + i, el, q); 119 if (a.isZERO() || a.isONE()) { 120 continue; 121 } 122 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 123 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 124 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 125 l.add(a); 126 } 127 p = new PolynomialList<BigRational>(pfac, l); 128 //System.out.println("p = "+p); 129 130 assertTrue("p == p", p.equals(p)); 131 assertEquals("p.length", 7, p.list.size()); 132 } 133 134 135 /** 136 * Test module list. 137 */ 138 public void testModuleList() { 139 List<List<GenPolynomial<BigRational>>> l = new ArrayList<List<GenPolynomial<BigRational>>>(); 140 for (int i = 0; i < 4; i++) { 141 List<GenPolynomial<BigRational>> r = new ArrayList<GenPolynomial<BigRational>>(); 142 for (int j = 0; j < 3; j++) { 143 a = pfac.random(kl, ll, el, q); 144 if (a.isZERO() || a.isONE()) { 145 continue; 146 } 147 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 148 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 149 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 150 r.add(a); 151 } 152 l.add(r); 153 } 154 m = new ModuleList<BigRational>(pfac, l); 155 //System.out.println("m = "+m); 156 assertTrue("m == m", m.equals(m)); 157 assertEquals("m.length", 4, m.list.size()); 158 159 List<Integer> perm = new ArrayList<Integer>(pfac.nvar); 160 for (int i = 0; i < pfac.nvar; i++) { 161 perm.add(i); 162 } 163 OptimizedModuleList op = new OptimizedModuleList<BigRational>(perm, pfac, l); 164 assertTrue("op == op", op.equals(op)); 165 assertFalse("op != m", op.equals(m)); 166 assertEquals("#var == #perm", pfac.nvar, op.perm.size()); 167 } 168 169 170 /** 171 * Test module and polynomial list. 172 */ 173 public void testModulePolynomialList() { 174 List<List<GenPolynomial<BigRational>>> l = new ArrayList<List<GenPolynomial<BigRational>>>(); 175 for (int i = 0; i < 4; i++) { 176 List<GenPolynomial<BigRational>> r = new ArrayList<GenPolynomial<BigRational>>(); 177 for (int j = 0; j < 3; j++) { 178 a = pfac.random(kl, ll, el, q); 179 if (a.isZERO() || a.isONE()) { 180 continue; 181 } 182 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 183 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 184 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 185 r.add(a); 186 } 187 l.add(r); 188 } 189 m = new ModuleList<BigRational>(pfac, l); 190 //System.out.println("m = "+m); 191 assertTrue("m == m", m.equals(m)); 192 assertEquals("m.length", 4, m.list.size()); 193 194 p = m.getPolynomialList(); 195 //System.out.println("p = "+p); 196 assertTrue("p == p", p.equals(p)); 197 assertEquals("p.length", 4, p.list.size()); 198 } 199 200 201 /** 202 * Test module and polynomial and module list. 203 */ 204 public void testModulePolynomialModuleList() { 205 List<List<GenPolynomial<BigRational>>> l = new ArrayList<List<GenPolynomial<BigRational>>>(); 206 for (int i = 0; i < 4; i++) { 207 List<GenPolynomial<BigRational>> r = new ArrayList<GenPolynomial<BigRational>>(); 208 for (int j = 0; j < 3; j++) { 209 a = pfac.random(kl, ll, el, q); 210 if (a.isZERO() || a.isONE()) { 211 continue; 212 } 213 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 214 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 215 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 216 r.add(a); 217 } 218 l.add(r); 219 } 220 m = new ModuleList<BigRational>(pfac, l); 221 //System.out.println("m = "+m); 222 assertTrue("m == m", m.equals(m)); 223 assertEquals("m.length", 4, m.list.size()); 224 225 p = m.getPolynomialList(); 226 //System.out.println("p = "+p); 227 assertTrue("p == p", p.equals(p)); 228 assertEquals("p.length", 4, p.list.size()); 229 230 ModuleList<BigRational> m2 = null; 231 m2 = p.getModuleList(3); 232 //System.out.println("m2 = "+m2); 233 assertTrue("m2 == m2", m2.equals(m2)); 234 assertEquals("m2.length", 4, m2.list.size()); 235 236 assertTrue("m == m2", m.equals(m2)); 237 } 238 239 240 /** 241 * Test module and polynomial and module and polynomial list. 242 */ 243 public void testModulePolynomialModuleListPolynomial() { 244 List<List<GenPolynomial<BigRational>>> l = new ArrayList<List<GenPolynomial<BigRational>>>(); 245 for (int i = 0; i < 4; i++) { 246 List<GenPolynomial<BigRational>> r = new ArrayList<GenPolynomial<BigRational>>(); 247 for (int j = 0; j < 3; j++) { 248 a = pfac.random(kl, ll, el, q); 249 if (a.isZERO() || a.isONE()) { 250 continue; 251 } 252 assertTrue("length( a" + i + " ) <> 0", a.length() >= 0); 253 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 254 assertTrue(" not isONE( a" + i + " )", !a.isONE()); 255 r.add(a); 256 } 257 l.add(r); 258 } 259 m = new ModuleList<BigRational>(pfac, l); 260 //System.out.println("m = "+m); 261 assertTrue("m == m", m.equals(m)); 262 assertEquals("m.length", 4, m.list.size()); 263 264 p = m.getPolynomialList(); 265 //System.out.println("p = "+p); 266 assertTrue("p == p", p.equals(p)); 267 assertEquals("p.length", 4, p.list.size()); 268 269 ModuleList<BigRational> m2 = null; 270 m2 = p.getModuleList(3); 271 //System.out.println("m2 = "+m2); 272 assertTrue("m2 == m2", m2.equals(m2)); 273 assertEquals("m2.length", 4, m2.list.size()); 274 275 assertTrue("m == m2", m.equals(m2)); 276 277 PolynomialList<BigRational> p2 = null; 278 p2 = m2.getPolynomialList(); 279 //System.out.println("p2 = "+p2); 280 assertTrue("p2 == p2", p2.equals(p2)); 281 assertEquals("p2.length", 4, p2.list.size()); 282 283 assertTrue("p == p2", p.list.equals(p2.list)); 284 } 285 286}