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 }