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    }