001 /* 002 * $Id: SolvableModuleListTest.java 3445 2010-12-25 17:24:04Z kredel $ 003 */ 004 005 package edu.jas.poly; 006 007 import java.util.List; 008 import java.util.ArrayList; 009 010 import junit.framework.Test; 011 import junit.framework.TestCase; 012 import junit.framework.TestSuite; 013 014 //import edu.jas.structure.RingElem; 015 016 import edu.jas.arith.BigRational; 017 018 //import edu.jas.poly.GenPolynomialRing; 019 020 021 /** 022 * SolvableModuleList tests using JUnit. 023 * @author Heinz Kredel. 024 */ 025 026 public class SolvableModuleListTest extends TestCase { 027 028 /** 029 * main. 030 */ 031 public static void main (String[] args) { 032 junit.textui.TestRunner.run( suite() ); 033 } 034 035 /** 036 * Constructs a <CODE>SolvableModuleListTest</CODE> object. 037 * @param name String. 038 */ 039 public SolvableModuleListTest(String name) { 040 super(name); 041 } 042 043 /** 044 * suite. 045 */ 046 public static Test suite() { 047 TestSuite suite= new TestSuite(SolvableModuleListTest.class); 048 return suite; 049 } 050 051 //private final static int bitlen = 100; 052 053 ModuleList<BigRational> m; 054 PolynomialList<BigRational> p; 055 056 GenSolvablePolynomial<BigRational> a; 057 GenSolvablePolynomial<BigRational> b; 058 GenSolvablePolynomial<BigRational> c; 059 GenSolvablePolynomial<BigRational> d; 060 GenSolvablePolynomial<BigRational> e; 061 062 BigRational cfac; 063 GenSolvablePolynomialRing<BigRational> pfac; 064 065 int rl = 4; 066 int kl = 4; 067 int ll = 4; 068 int el = 5; 069 float q = 0.5f; 070 071 protected void setUp() { 072 a = b = c = d = e = null; 073 cfac = new BigRational(1); 074 TermOrder tord = new TermOrder(); 075 pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rl,tord); 076 m = null; 077 p = null; 078 } 079 080 protected void tearDown() { 081 a = b = c = d = e = null; 082 m = null; 083 p = null; 084 } 085 086 087 /** 088 * Test constructor and toString. 089 * 090 */ 091 public void testConstructor() { 092 p = new PolynomialList<BigRational>(pfac,(List<GenPolynomial<BigRational>>)null); 093 assertTrue("p = 0", p.list == null); 094 095 m = new ModuleList<BigRational>(pfac,(List<List<GenPolynomial<BigRational>>>)null); 096 assertTrue("m = 0", m.list == null); 097 } 098 099 100 /** 101 * Test polynomial list. 102 * 103 */ 104 public void testPolynomialList() { 105 List<GenPolynomial<BigRational>> l 106 = new ArrayList<GenPolynomial<BigRational>>(); 107 for (int i = 0; i < 7; i++) { 108 a = pfac.random(kl, ll+i, el, q ); 109 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 110 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 111 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 112 l.add( a ); 113 } 114 p = new PolynomialList<BigRational>(pfac,l); 115 //System.out.println("p = "+p); 116 117 assertTrue("p == p", p.equals(p) ); 118 assertEquals("p.length", 7, p.list.size() ); 119 } 120 121 122 /** 123 * Test module list. 124 * 125 */ 126 public void testModuleList() { 127 List<List<GenPolynomial<BigRational>>> l 128 = new ArrayList<List<GenPolynomial<BigRational>>>(); 129 for (int i = 0; i < 4; i++) { 130 List<GenPolynomial<BigRational>> r 131 = new ArrayList<GenPolynomial<BigRational>>(); 132 for ( int j = 0; j < 3; j++ ) { 133 a = pfac.random(kl, ll, el, q ); 134 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 135 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 136 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 137 r.add( a ); 138 } 139 l.add( r ); 140 } 141 m = new ModuleList<BigRational>(pfac,l); 142 //System.out.println("m = "+m); 143 assertTrue("m == m", m.equals(m) ); 144 assertEquals("m.length", 4, m.list.size() ); 145 } 146 147 148 /** 149 * Test module and polynomial list. 150 * 151 */ 152 public void testModulePolynomialList() { 153 List<List<GenPolynomial<BigRational>>> l 154 = new ArrayList<List<GenPolynomial<BigRational>>>(); 155 for (int i = 0; i < 4; i++) { 156 List<GenPolynomial<BigRational>> r 157 = new ArrayList<GenPolynomial<BigRational>>(); 158 for ( int j = 0; j < 3; j++ ) { 159 a = pfac.random(kl, ll, el, q ); 160 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 161 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 162 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 163 r.add( a ); 164 } 165 l.add( r ); 166 } 167 m = new ModuleList<BigRational>(pfac,l); 168 //System.out.println("m = "+m); 169 assertTrue("m == m", m.equals(m) ); 170 assertEquals("m.length", 4, m.list.size() ); 171 172 p = m.getPolynomialList(); 173 //System.out.println("p = "+p); 174 assertTrue("p == p", p.equals(p) ); 175 assertEquals("p.length", 4, p.list.size() ); 176 } 177 178 179 /** 180 * Test module and polynomial and module list. 181 * 182 */ 183 public void testModulePolynomialModuleList() { 184 List<List<GenPolynomial<BigRational>>> l 185 = new ArrayList<List<GenPolynomial<BigRational>>>(); 186 for (int i = 0; i < 4; i++) { 187 List<GenPolynomial<BigRational>> r 188 = new ArrayList<GenPolynomial<BigRational>>(); 189 for ( int j = 0; j < 3; j++ ) { 190 a = pfac.random(kl, ll, el, q ); 191 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 192 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 193 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 194 r.add( a ); 195 } 196 l.add( r ); 197 } 198 m = new ModuleList<BigRational>(pfac,l); 199 //System.out.println("m = "+m); 200 assertTrue("m == m", m.equals(m) ); 201 assertEquals("m.length", 4, m.list.size() ); 202 203 p = m.getPolynomialList(); 204 //System.out.println("p = "+p); 205 assertTrue("p == p", p.equals(p) ); 206 assertEquals("p.length", 4, p.list.size() ); 207 208 ModuleList<BigRational> m2 = null; 209 m2 = p.getModuleList( 3 ); 210 //System.out.println("m2 = "+m2); 211 assertTrue("m2 == m2", m2.equals(m2) ); 212 assertEquals("m2.length", 4, m2.list.size() ); 213 214 assertTrue("m == m2", m.equals(m2) ); 215 } 216 217 218 /** 219 * Test module and polynomial and module and polynomial list. 220 * 221 */ 222 public void testModulePolynomialModuleListPolynomial() { 223 List<List<GenPolynomial<BigRational>>> l 224 = new ArrayList<List<GenPolynomial<BigRational>>>(); 225 for (int i = 0; i < 4; i++) { 226 List<GenPolynomial<BigRational>> r 227 = new ArrayList<GenPolynomial<BigRational>>(); 228 for ( int j = 0; j < 3; j++ ) { 229 a = pfac.random(kl, ll, el, q ); 230 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 231 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 232 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 233 r.add( a ); 234 } 235 l.add( r ); 236 } 237 m = new ModuleList<BigRational>(pfac,l); 238 //System.out.println("m = "+m); 239 assertTrue("m == m", m.equals(m) ); 240 assertEquals("m.length", 4, m.list.size() ); 241 242 p = m.getPolynomialList(); 243 //System.out.println("p = "+p); 244 assertTrue("p == p", p.equals(p) ); 245 assertEquals("p.length", 4, p.list.size() ); 246 247 ModuleList<BigRational> m2 = null; 248 m2 = p.getModuleList( 3 ); 249 //System.out.println("m2 = "+m2); 250 assertTrue("m2 == m2", m2.equals(m2) ); 251 assertEquals("m2.length", 4, m2.list.size() ); 252 253 assertTrue("m == m2", m.equals(m2) ); 254 255 PolynomialList<BigRational> p2 = null; 256 p2 = m2.getPolynomialList(); 257 //System.out.println("p2 = "+p2); 258 assertTrue("p2 == p2", p2.equals(p2) ); 259 assertEquals("p2.length", 4, p2.list.size() ); 260 261 assertTrue("p == p2", p.list.equals(p2.list) ); 262 } 263 264 265 /** 266 * Test module and polynomial and module and polynomial list 267 * with WeylRelations. 268 * 269 */ 270 public void testWeylModulePolynomialModuleListPolynomial() { 271 int rloc = 4; 272 pfac = new GenSolvablePolynomialRing<BigRational>(cfac,rloc); 273 274 WeylRelations<BigRational> wl = new WeylRelations<BigRational>(pfac); 275 wl.generate(); 276 RelationTable table1 = pfac.table; 277 RelationTable table2 = null; 278 RelationTable table3 = null; 279 RelationTable table4 = null; 280 RelationTable table5 = null; 281 //System.out.println("table 1 = " + table1); 282 //System.out.println("ring = " + ring); 283 284 List<List<GenPolynomial<BigRational>>> l 285 = new ArrayList<List<GenPolynomial<BigRational>>>(); 286 for (int i = 0; i < 4; i++) { 287 List<GenPolynomial<BigRational>> r 288 = new ArrayList<GenPolynomial<BigRational>>(); 289 for ( int j = 0; j < 3; j++ ) { 290 a = pfac.random(kl, ll, el, q ); 291 assertTrue("length( a"+i+" ) <> 0", a.length() >= 0); 292 assertTrue(" not isZERO( a"+i+" )", !a.isZERO() ); 293 assertTrue(" not isONE( a"+i+" )", !a.isONE() ); 294 r.add( a ); 295 } 296 l.add( r ); 297 } 298 m = new ModuleList<BigRational>(pfac,l); 299 //System.out.println("m = "+m); 300 assertTrue("m == m", m.equals(m) ); 301 assertEquals("m.length", 4, m.list.size() ); 302 303 table2 = ((GenSolvablePolynomialRing<BigRational>)m.ring).table; 304 //System.out.println("table 2 = " + table2); 305 assertEquals("table1 == table2", table1, table2 ); 306 307 308 p = m.getPolynomialList(); 309 //System.out.println("p = "+p); 310 assertTrue("p == p", p.equals(p) ); 311 assertEquals("p.length", 4, p.list.size() ); 312 313 table3 = ((GenSolvablePolynomialRing<BigRational>)p.ring).table; 314 //System.out.println("table 3 = " + table3); 315 316 ModuleList<BigRational> m2 = null; 317 m2 = p.getModuleList( 3 ); 318 //System.out.println("m2 = "+m2); 319 assertTrue("m2 == m2", m2.equals(m2) ); 320 assertEquals("m2.length", 4, m2.list.size() ); 321 322 assertTrue("m == m2", m.equals(m2) ); 323 324 table4 = ((GenSolvablePolynomialRing<BigRational>)m2.ring).table; 325 //System.out.println("table 4 = " + table4); 326 assertEquals("table2 == table4", table2, table4 ); 327 assertEquals("table1 == table4", table1, table4 ); 328 329 330 PolynomialList<BigRational> p2 = null; 331 p2 = m2.getPolynomialList(); 332 //System.out.println("p2 = "+p2); 333 assertTrue("p2 == p2", p2.equals(p2) ); 334 assertEquals("p2.length", 4, p2.list.size() ); 335 336 assertTrue("p == p2", p.list.equals(p2.list) ); 337 table5 = ((GenSolvablePolynomialRing<BigRational>)p2.ring).table; 338 //System.out.println("table 5= " + table5); 339 assertEquals("table2 == table4", table3.table, table5.table ); 340 } 341 342 }