001/* 002 * $Id: SquarefreeTest.java 5863 2018-07-20 11:13:34Z kredel $ 003 */ 004 005package edu.jas.ufd; 006 007 008import junit.framework.Test; 009import junit.framework.TestCase; 010import junit.framework.TestSuite; 011 012import edu.jas.arith.BigInteger; 013import edu.jas.arith.BigRational; 014import edu.jas.arith.ModInteger; 015import edu.jas.arith.ModIntegerRing; 016import edu.jas.arith.ModLong; 017import edu.jas.arith.ModLongRing; 018import edu.jas.kern.ComputerThreads; 019import edu.jas.poly.AlgebraicNumber; 020import edu.jas.poly.AlgebraicNumberRing; 021import edu.jas.poly.GenPolynomial; 022import edu.jas.poly.GenPolynomialRing; 023import edu.jas.structure.RingFactory; 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 */ 074 public void testFactorySpecific() { 075 ModIntegerRing mi = new ModIntegerRing(19, true); 076 Squarefree<ModInteger> sqfm = SquarefreeFactory.getImplementation(mi); 077 //System.out.println("sqfm = " + sqfm); 078 assertTrue("sqf != Modular " + sqfm, sqfm instanceof SquarefreeFiniteFieldCharP); 079 080 ModLongRing ml = new ModLongRing(19, true); 081 Squarefree<ModLong> sqfml = SquarefreeFactory.getImplementation(ml); 082 //System.out.println("sqfml = " + sqfml); 083 assertTrue("sqf != Modular " + sqfml, sqfml instanceof SquarefreeFiniteFieldCharP); 084 085 BigInteger bi = new BigInteger(1); 086 Squarefree<BigInteger> sqfi = SquarefreeFactory.getImplementation(bi); 087 //System.out.println("sqfi = " + sqfi); 088 assertTrue("sqf != Integer " + sqfi, sqfi instanceof SquarefreeRingChar0); 089 090 BigRational br = new BigRational(1); 091 Squarefree<BigRational> sqfr = SquarefreeFactory.getImplementation(br); 092 //System.out.println("sqfr = " + sqfr); 093 assertTrue("sqf != Rational " + sqfr, sqfr instanceof SquarefreeFieldChar0); 094 095 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 096 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 097 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 098 Squarefree<AlgebraicNumber<ModInteger>> sqfam = SquarefreeFactory.<ModInteger> getImplementation(am); 099 //System.out.println("sqfam = " + sqfam); 100 assertTrue("sqf != AlgebraicNumber<ModInteger> " + sqfam, 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 */ 128 @SuppressWarnings("unchecked") 129 public void testFactoryGeneric() { 130 ModIntegerRing mi = new ModIntegerRing(19, true); 131 Squarefree<ModInteger> sqfm = SquarefreeFactory.getImplementation((RingFactory) mi); 132 //System.out.println("sqfm = " + sqfm); 133 assertTrue("sqf != Modular " + sqfm, sqfm instanceof SquarefreeFiniteFieldCharP); 134 135 ModLongRing ml = new ModLongRing(19, true); 136 Squarefree<ModLong> sqfml = SquarefreeFactory.getImplementation((RingFactory) ml); 137 //System.out.println("sqfml = " + sqfml); 138 assertTrue("sqf != Modular " + sqfml, sqfml instanceof SquarefreeFiniteFieldCharP); 139 140 BigInteger bi = new BigInteger(1); 141 Squarefree<BigInteger> sqfi = SquarefreeFactory.getImplementation((RingFactory) bi); 142 //System.out.println("sqfi = " + sqfi); 143 assertTrue("sqf != Integer " + sqfi, sqfi instanceof SquarefreeRingChar0); 144 145 BigRational br = new BigRational(1); 146 Squarefree<BigRational> sqfr = SquarefreeFactory.getImplementation((RingFactory) br); 147 //System.out.println("sqfr = " + sqfr); 148 assertTrue("sqf != Rational " + sqfr, sqfr instanceof SquarefreeFieldChar0); 149 150 GenPolynomialRing<ModInteger> pmfac = new GenPolynomialRing<ModInteger>(mi, 1); 151 GenPolynomial<ModInteger> pm = pmfac.univariate(0); 152 AlgebraicNumberRing<ModInteger> am = new AlgebraicNumberRing<ModInteger>(pm, true); 153 Squarefree<AlgebraicNumber<ModInteger>> sqfam = SquarefreeFactory.getImplementation((RingFactory) am); 154 //System.out.println("sqfam = " + sqfam); 155 assertTrue("sqf != AlgebraicNumber<ModInteger> " + sqfam, 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}