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