001 /* 002 * $Id: SquarefreeTest.java 3356 2010-10-23 16:41:01Z kredel $ 003 */ 004 005 package edu.jas.ufd; 006 007 008 import junit.framework.Test; 009 import junit.framework.TestCase; 010 import junit.framework.TestSuite; 011 012 import edu.jas.arith.BigInteger; 013 import edu.jas.arith.BigRational; 014 import edu.jas.arith.ModInteger; 015 import edu.jas.arith.ModIntegerRing; 016 import edu.jas.arith.ModLong; 017 import edu.jas.arith.ModLongRing; 018 import edu.jas.kern.ComputerThreads; 019 import edu.jas.poly.AlgebraicNumber; 020 import edu.jas.poly.AlgebraicNumberRing; 021 import edu.jas.poly.GenPolynomial; 022 import edu.jas.poly.GenPolynomialRing; 023 import edu.jas.structure.RingFactory; 024 025 026 /** 027 * Squarefree Factory tests with JUnit. 028 * @author Heinz Kredel. 029 */ 030 031 public class SquarefreeTest extends TestCase { 032 033 034 /** 035 * main. 036 */ 037 public static void main(String[] args) { 038 //BasicConfigurator.configure(); 039 junit.textui.TestRunner.run(suite()); 040 } 041 042 043 /** 044 * Constructs a <CODE>SquarefreeTest</CODE> object. 045 * @param name String. 046 */ 047 public SquarefreeTest(String name) { 048 super(name); 049 } 050 051 052 /** 053 */ 054 public static Test suite() { 055 TestSuite suite = new TestSuite(SquarefreeTest.class); 056 return suite; 057 } 058 059 060 @Override 061 protected void setUp() { 062 } 063 064 065 @Override 066 protected void tearDown() { 067 ComputerThreads.terminate(); 068 } 069 070 071 /** 072 * Test factory specific. 073 * 074 */ 075 public void testFactorySpecific() { 076 ModIntegerRing mi = new ModIntegerRing(19, true); 077 Squarefree<ModInteger> sqfm = SquarefreeFactory.getImplementation(mi); 078 //System.out.println("sqfm = " + sqfm); 079 assertTrue("sqf != Modular " + sqfm, sqfm instanceof SquarefreeFiniteFieldCharP); 080 081 ModLongRing ml = new ModLongRing(19, true); 082 Squarefree<ModLong> sqfml = SquarefreeFactory.getImplementation(ml); 083 //System.out.println("sqfml = " + sqfml); 084 assertTrue("sqf != Modular " + sqfml, sqfml instanceof SquarefreeFiniteFieldCharP); 085 086 BigInteger bi = new BigInteger(1); 087 Squarefree<BigInteger> sqfi = SquarefreeFactory.getImplementation(bi); 088 //System.out.println("sqfi = " + sqfi); 089 assertTrue("sqf != Integer " + sqfi, sqfi instanceof SquarefreeRingChar0); 090 091 BigRational br = new BigRational(1); 092 Squarefree<BigRational> sqfr = SquarefreeFactory.getImplementation(br); 093 //System.out.println("sqfr = " + sqfr); 094 assertTrue("sqf != Rational " + sqfr, sqfr instanceof SquarefreeFieldChar0); 095 096 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 097 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 098 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 099 Squarefree<AlgebraicNumber<ModInteger>> sqfam = SquarefreeFactory.<ModInteger> getImplementation(am); 100 //System.out.println("sqfam = " + sqfam); 101 assertTrue("sqf != AlgebraicNumber<ModInteger> " + sqfam, sqfam instanceof SquarefreeFiniteFieldCharP); 102 103 GenPolynomialRing<BigRational> prfac = new GenPolynomialRing<BigRational>(br, 1); 104 GenPolynomial<BigRational> pr = prfac.univariate(0); 105 AlgebraicNumberRing<BigRational> ar = new AlgebraicNumberRing<BigRational>(pr, true); 106 Squarefree<AlgebraicNumber<BigRational>> sqfar = SquarefreeFactory 107 .<BigRational> getImplementation(ar); 108 //System.out.println("sqfar = " + sqfar); 109 assertTrue("sqf != AlgebraicNumber<BigRational> " + sqfar, sqfar instanceof SquarefreeFieldChar0); 110 111 prfac = new GenPolynomialRing<BigRational>(br, 2); 112 QuotientRing<BigRational> qrfac = new QuotientRing<BigRational>(prfac); 113 Squarefree<Quotient<BigRational>> sqfqr = SquarefreeFactory.<BigRational> getImplementation(qrfac); 114 //System.out.println("sqfqr = " + sqfqr); 115 assertTrue("sqf != Quotient<BigRational> " + sqfqr, sqfqr instanceof SquarefreeFieldChar0); 116 117 pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 118 QuotientRing<ModInteger> qmfac = new QuotientRing<ModInteger>(pmfac); 119 Squarefree<Quotient<ModInteger>> sqfqm = SquarefreeFactory.<ModInteger> getImplementation(qmfac); 120 //System.out.println("sqfqm = " + sqfqm); 121 assertTrue("sqf != Quotient<ModInteger> " + sqfqm, sqfqm instanceof SquarefreeInfiniteFieldCharP); 122 } 123 124 125 /** 126 * Test factory generic. 127 * 128 */ 129 @SuppressWarnings("unchecked") 130 public void testFactoryGeneric() { 131 ModIntegerRing mi = new ModIntegerRing(19, true); 132 Squarefree<ModInteger> sqfm = SquarefreeFactory.getImplementation((RingFactory) mi); 133 //System.out.println("sqfm = " + sqfm); 134 assertTrue("sqf != Modular " + sqfm, sqfm instanceof SquarefreeFiniteFieldCharP); 135 136 ModLongRing ml = new ModLongRing(19, true); 137 Squarefree<ModLong> sqfml = SquarefreeFactory.getImplementation((RingFactory) ml); 138 //System.out.println("sqfml = " + sqfml); 139 assertTrue("sqf != Modular " + sqfml, sqfml instanceof SquarefreeFiniteFieldCharP); 140 141 BigInteger bi = new BigInteger(1); 142 Squarefree<BigInteger> sqfi = SquarefreeFactory.getImplementation((RingFactory) bi); 143 //System.out.println("sqfi = " + sqfi); 144 assertTrue("sqf != Integer " + sqfi, sqfi instanceof SquarefreeRingChar0); 145 146 BigRational br = new BigRational(1); 147 Squarefree<BigRational> sqfr = SquarefreeFactory.getImplementation((RingFactory) br); 148 //System.out.println("sqfr = " + sqfr); 149 assertTrue("sqf != Rational " + sqfr, sqfr instanceof SquarefreeFieldChar0); 150 151 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 152 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 153 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 154 Squarefree<AlgebraicNumber<ModInteger>> sqfam = SquarefreeFactory.getImplementation((RingFactory) am); 155 //System.out.println("sqfam = " + sqfam); 156 assertTrue("sqf != AlgebraicNumber<ModInteger> " + sqfam, sqfam instanceof SquarefreeFiniteFieldCharP); 157 158 GenPolynomialRing<BigRational> prfac = new GenPolynomialRing<BigRational>(br, 1); 159 GenPolynomial<BigRational> pr = prfac.univariate(0); 160 AlgebraicNumberRing<BigRational> ar = new AlgebraicNumberRing<BigRational>(pr, true); 161 Squarefree<AlgebraicNumber<BigRational>> sqfar = SquarefreeFactory 162 .getImplementation((RingFactory) ar); 163 //System.out.println("sqfar = " + sqfar); 164 assertTrue("sqf != AlgebraicNumber<BigRational> " + sqfar, sqfar instanceof SquarefreeFieldChar0); 165 166 prfac = new GenPolynomialRing<BigRational>(br, 2); 167 QuotientRing<BigRational> qrfac = new QuotientRing<BigRational>(prfac); 168 Squarefree<Quotient<BigRational>> sqfqr = SquarefreeFactory.getImplementation((RingFactory) qrfac); 169 //System.out.println("sqfqr = " + sqfqr); 170 assertTrue("sqf != Quotient<BigRational> " + sqfqr, sqfqr instanceof SquarefreeFieldChar0); 171 172 pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 173 QuotientRing<ModInteger> qmfac = new QuotientRing<ModInteger>(pmfac); 174 Squarefree<Quotient<ModInteger>> sqfqm = SquarefreeFactory.getImplementation((RingFactory) qmfac); 175 //System.out.println("sqfqm = " + sqfqm); 176 assertTrue("sqf != Quotient<ModInteger> " + sqfqm, sqfqm instanceof SquarefreeInfiniteFieldCharP); 177 } 178 179 }