001 /* 002 * $Id: RelationTableTest.java 1894 2008-07-12 13:50:23Z kredel $ 003 */ 004 005 package edu.jas.poly; 006 007 //import edu.jas.poly.RelationTable; 008 009 import junit.framework.Test; 010 import junit.framework.TestCase; 011 import junit.framework.TestSuite; 012 013 import org.apache.log4j.BasicConfigurator; 014 015 import edu.jas.arith.BigRational; 016 017 /** 018 * RelationTable tests with JUnit. 019 * @author Heinz Kredel. 020 */ 021 022 public class RelationTableTest extends TestCase { 023 024 /** 025 * main. 026 */ 027 public static void main (String[] args) { 028 BasicConfigurator.configure(); 029 junit.textui.TestRunner.run( suite() ); 030 } 031 032 /** 033 * Constructs a <CODE>RelationTableTest</CODE> object. 034 * @param name String. 035 */ 036 public RelationTableTest(String name) { 037 super(name); 038 } 039 040 /** 041 * suite. 042 */ 043 public static Test suite() { 044 TestSuite suite= new TestSuite(RelationTableTest.class); 045 return suite; 046 } 047 048 RelationTable<BigRational> table; 049 GenSolvablePolynomialRing<BigRational> ring; 050 int rl = 5; 051 052 protected void setUp() { 053 BigRational cfac = new BigRational(1); 054 ring = new GenSolvablePolynomialRing<BigRational>(cfac,rl); 055 table = ring.table; // non null 056 } 057 058 protected void tearDown() { 059 table = null; 060 ring = null; 061 } 062 063 064 /** 065 * Test constructor and toString. 066 * 067 */ 068 public void testConstructor() { 069 table = new RelationTable<BigRational>(ring); 070 assertEquals("size() = 0",0,table.size()); 071 assertEquals("ring == table.ring",ring,table.ring); 072 073 String s = "RelationTable[]"; 074 String t = table.toString(); 075 assertEquals("RelationTable[]",s,t); 076 } 077 078 079 /** 080 * Test update one key. 081 * 082 */ 083 public void testUpdateOneKey() { 084 table = ring.table; 085 assertEquals("size() = 0",0,table.size()); 086 087 //ExpVector z = ring.evzero; 088 ExpVector e = ExpVector.create(rl,2,1); 089 ExpVector f = ExpVector.create(rl,3,1); // insert in empty 090 091 ExpVector ef = e.sum(f); 092 093 GenSolvablePolynomial<BigRational> a = ring.getONE(); 094 GenSolvablePolynomial<BigRational> b = ring.getONE().multiply(ef); 095 GenSolvablePolynomial<BigRational> rel 096 = (GenSolvablePolynomial<BigRational>)a.sum(b); 097 098 table.update(e,f,rel); 099 assertEquals("size() = 1",1,table.size()); 100 101 e = ExpVector.create(rl,2,2); 102 f = ExpVector.create(rl,3,1); // insert in beginning 103 104 ef = e.sum(f); 105 b = ring.getONE().multiply(ef); 106 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 107 108 table.update(e,f,rel); 109 assertEquals("size() = 2",2,table.size()); 110 111 e = ExpVector.create(rl,2,2); 112 f = ExpVector.create(rl,3,2); 113 114 ef = e.sum(f); 115 b = ring.getONE().multiply(ef); 116 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 117 118 table.update(e,f,rel); 119 assertEquals("size() = 3",3,table.size()); 120 121 e = ExpVector.create(rl,2,2); 122 f = ExpVector.create(rl,3,4); 123 124 ef = e.sum(f); 125 b = ring.getONE().multiply(ef); 126 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 127 128 table.update(e,f,rel); 129 assertEquals("size() = 4",4,table.size()); 130 131 e = ExpVector.create(rl,2,2); 132 f = ExpVector.create(rl,3,3); // insert in middle 133 134 ef = e.sum(f); 135 b = ring.getONE().multiply(ef); 136 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 137 138 table.update(e,f,rel); 139 assertEquals("size() = 5",5,table.size()); 140 141 //System.out.println("table = " + table); 142 } 143 144 145 /** 146 * Test update more keys. 147 * 148 */ 149 public void testUpdateKeys() { 150 table = ring.table; 151 assertEquals("size() = 0",0,table.size()); 152 153 //ExpVector z = ring.evzero; 154 ExpVector e = ExpVector.create(rl,2,1); 155 ExpVector f = ExpVector.create(rl,3,1); // insert in empty 156 157 ExpVector ef = e.sum(f); 158 159 GenSolvablePolynomial<BigRational> a = ring.getONE(); 160 GenSolvablePolynomial<BigRational> b = ring.getONE().multiply(ef); 161 GenSolvablePolynomial<BigRational> rel 162 = (GenSolvablePolynomial<BigRational>)a.sum(b); 163 164 table.update(e,f,rel); 165 assertEquals("size() = 1",1,table.size()); 166 167 e = ExpVector.create(rl,0,1); 168 f = ExpVector.create(rl,2,1); 169 170 ef = e.sum(f); 171 172 b = ring.getONE().multiply(ef); 173 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 174 175 table.update(e,f,rel); 176 assertEquals("size() = 2",2,table.size()); 177 178 e = ExpVector.create(rl,2,1); 179 f = ExpVector.create(rl,4,1); 180 181 ef = e.sum(f); 182 b = ring.getONE().multiply(ef); 183 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 184 185 table.update(e,f,rel); 186 assertEquals("size() = 3",3,table.size()); 187 188 //System.out.println("table = " + table); 189 } 190 191 192 /** 193 * Test lookup one key. 194 * 195 */ 196 public void testLookupOneKey() { 197 table = ring.table; 198 assertEquals("size() = 0",0,table.size()); 199 200 //ExpVector z = ring.evzero; 201 ExpVector e = ExpVector.create(rl,2,1); 202 ExpVector f = ExpVector.create(rl,3,1); // insert in empty 203 204 ExpVector ef = e.sum(f); 205 GenSolvablePolynomial<BigRational> a = ring.getONE(); 206 GenSolvablePolynomial<BigRational> b = ring.getONE().multiply(ef); 207 GenSolvablePolynomial<BigRational> rel 208 = (GenSolvablePolynomial<BigRational>)a.sum(b); 209 GenSolvablePolynomial<BigRational> r1 = rel; 210 211 table.update(e,f,rel); 212 assertEquals("size() = 1",1,table.size()); 213 214 TableRelation<BigRational> r = table.lookup(e,f); 215 //System.out.println("relation = " + r); 216 assertEquals("e = e",null,r.e); 217 assertEquals("f = f",null,r.f); 218 assertEquals("p = p",rel,r.p); 219 220 221 e = ExpVector.create(rl,2,2); 222 f = ExpVector.create(rl,3,1); // insert in beginning 223 224 ef = e.sum(f); 225 b = ring.getONE().multiply(ef); 226 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 227 228 table.update(e,f,rel); 229 assertEquals("size() = 2",2,table.size()); 230 231 r = table.lookup(e,f); 232 assertEquals("e = e",null,r.e); 233 assertEquals("f = f",null,r.f); 234 assertEquals("p = p",rel,r.p); 235 236 237 e = ExpVector.create(rl,2,2); 238 f = ExpVector.create(rl,3,2); 239 240 ef = e.sum(f); 241 b = ring.getONE().multiply(ef); 242 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 243 244 table.update(e,f,rel); 245 assertEquals("size() = 3",3,table.size()); 246 247 r = table.lookup(e,f); 248 assertEquals("e = e",null,r.e); 249 assertEquals("f = f",null,r.f); 250 assertEquals("p = p",rel,r.p); 251 252 253 e = ExpVector.create(rl,2,2); 254 f = ExpVector.create(rl,3,4); 255 256 ef = e.sum(f); 257 b = ring.getONE().multiply(ef); 258 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 259 260 table.update(e,f,rel); 261 assertEquals("size() = 4",4,table.size()); 262 263 r = table.lookup(e,f); 264 assertEquals("e = e",null,r.e); 265 assertEquals("f = f",null,r.f); 266 assertEquals("p = p",rel,r.p); 267 268 269 e = ExpVector.create(rl,2,2); 270 f = ExpVector.create(rl,3,3); // insert in middle 271 272 ef = e.sum(f); 273 b = ring.getONE().multiply(ef); 274 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 275 276 table.update(e,f,rel); 277 assertEquals("size() = 5",5,table.size()); 278 279 r = table.lookup(e,f); 280 assertEquals("e = e",null,r.e); 281 assertEquals("f = f",null,r.f); 282 assertEquals("p = p",rel,r.p); 283 284 285 // lookup only 286 e = ExpVector.create(rl,2,1); 287 f = ExpVector.create(rl,3,1); 288 289 r = table.lookup(e,f); 290 assertEquals("e = e",null,r.e); 291 assertEquals("f = f",null,r.f); 292 assertEquals("p = p",r1,r.p); 293 294 //System.out.println("table = " + table); 295 } 296 297 298 /** 299 * Test lookup keys. 300 * 301 */ 302 public void testLookupKeys() { 303 table = ring.table; 304 assertEquals("size() = 0",0,table.size()); 305 306 //ExpVector z = ring.evzero; 307 ExpVector e = ExpVector.create(rl,2,1); 308 ExpVector f = ExpVector.create(rl,3,1); 309 310 ExpVector ef = e.sum(f); 311 GenSolvablePolynomial<BigRational> a = ring.getONE(); 312 GenSolvablePolynomial<BigRational> b = ring.getONE().multiply(ef); 313 GenSolvablePolynomial<BigRational> rel 314 = (GenSolvablePolynomial<BigRational>)a.sum(b); 315 316 table.update(e,f,rel); 317 assertEquals("size() = 1",1,table.size()); 318 319 TableRelation<BigRational> r = table.lookup(e,f); 320 assertEquals("e = e",null,r.e); 321 assertEquals("f = f",null,r.f); 322 assertEquals("p = p",rel,r.p); 323 324 325 e = ExpVector.create(rl,0,1); 326 f = ExpVector.create(rl,2,1); 327 ef = e.sum(f); 328 b = ring.getONE().multiply(ef); 329 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 330 331 table.update(e,f,rel); 332 assertEquals("size() = 2",2,table.size()); 333 334 r = table.lookup(e,f); 335 assertEquals("e = e",null,r.e); 336 assertEquals("f = f",null,r.f); 337 assertEquals("p = p",rel,r.p); 338 339 340 e = ExpVector.create(rl,2,1); 341 f = ExpVector.create(rl,4,1); 342 ef = e.sum(f); 343 b = ring.getONE().multiply(ef); 344 rel = (GenSolvablePolynomial<BigRational>)a.sum(b); 345 346 table.update(e,f,rel); 347 assertEquals("size() = 3",3,table.size()); 348 349 r = table.lookup(e,f); 350 assertEquals("e = e",null,r.e); 351 assertEquals("f = f",null,r.f); 352 assertEquals("p = p",rel,r.p); 353 354 355 //System.out.println("table = " + table); 356 } 357 358 359 /** 360 * Test lookup symmetric products. 361 * 362 */ 363 public void testSymmetric() { 364 table = ring.table; 365 assertEquals("size() = 0",0,table.size()); 366 367 //ExpVector z = ring.evzero; 368 ExpVector e = ExpVector.create(rl,2,1); 369 ExpVector f = ExpVector.create(rl,3,1); 370 371 ExpVector ef = e.sum(f); 372 373 //GenSolvablePolynomial<BigRational> a = ring.getONE(); 374 GenSolvablePolynomial<BigRational> b = ring.getONE().multiply(ef); 375 //GenSolvablePolynomial<BigRational> rel 376 // = (GenSolvablePolynomial<BigRational>)a.add(b); 377 378 TableRelation<BigRational> r = table.lookup(e,f); 379 //System.out.println("relation = " + r); 380 assertEquals("e = e",null,r.e); 381 assertEquals("f = f",null,r.f); 382 assertEquals("p = b",b,r.p); 383 384 385 e = ExpVector.create(rl,0,1); 386 f = ExpVector.create(rl,2,1); 387 ef = e.sum(f); 388 b = ring.getONE().multiply(ef); 389 390 r = table.lookup(e,f); 391 assertEquals("e = e",null,r.e); 392 assertEquals("f = f",null,r.f); 393 assertEquals("p = b",b,r.p); 394 395 396 e = ExpVector.create(rl,2,1); 397 f = ExpVector.create(rl,4,1); 398 ef = e.sum(f); 399 b = ring.getONE().multiply(ef); 400 401 r = table.lookup(e,f); 402 assertEquals("e = e",null,r.e); 403 assertEquals("f = f",null,r.f); 404 assertEquals("p = b",b,r.p); 405 406 assertEquals("size() = 0",0,table.size()); 407 //System.out.println("table = " + table); 408 } 409 410 }