001 /*
002 * $Id: BigComplexTest.java 1244 2007-07-29 09:54:27Z kredel $
003 */
004
005 package edu.jas.arith;
006
007 //import edu.jas.arith.BigRational;
008
009 import junit.framework.Test;
010 import junit.framework.TestCase;
011 import junit.framework.TestSuite;
012
013 /**
014 * BigComplex tests with JUnit.
015 * @author Heinz Kredel.
016 */
017
018 public class BigComplexTest extends TestCase {
019
020 /**
021 * main
022 */
023 public static void main (String[] args) {
024 junit.textui.TestRunner.run( suite() );
025 }
026
027 /**
028 * Constructs a <CODE>BigComplexTest</CODE> object.
029 * @param name String.
030 */
031 public BigComplexTest(String name) {
032 super(name);
033 }
034
035 /**
036 * suite.
037 */
038 public static Test suite() {
039 TestSuite suite= new TestSuite(BigComplexTest.class);
040 return suite;
041 }
042
043 BigComplex a;
044 BigComplex b;
045 BigComplex c;
046 BigComplex d;
047 BigComplex e;
048
049 protected void setUp() {
050 a = b = c = d = e = null;
051 }
052
053 protected void tearDown() {
054 a = b = c = d = e = null;
055 }
056
057
058 /**
059 * Test static initialization and constants.
060 *
061 */
062 public void testConstants() {
063 a = BigComplex.ZERO;
064 b = BigComplex.ONE;
065 c = BigComplex.CDIF(b,b);
066
067 assertEquals("1-1 = 0",c,a);
068 assertTrue("1-1 = 0",c.isZERO());
069 assertTrue("1 = 1", b.isONE() );
070
071 a = BigComplex.ZERO;
072 b = BigComplex.ONE;
073 c = BigComplex.CDIF(b,b);
074
075 assertEquals("1-1 = 0",c,a);
076 }
077
078
079 /**
080 * Test constructor and toString.
081 *
082 */
083 public void testConstructor() {
084 a = new BigComplex( "6/8" );
085 b = new BigComplex( "3/4" );
086
087 assertEquals("6/8 = 3/4",a,b);
088
089 a = new BigComplex( "3/4 i 4/5" );
090 b = new BigComplex( "-3/4 i -4/5" );
091
092 assertEquals("3/4 + i 4/5 ",a,b.negate());
093
094 String s = "6/1111111111111111111111111111111111111111111";
095 a = new BigComplex( s );
096 String t = a.toString();
097
098 assertEquals("stringConstr = toString",s,t);
099
100 a = new BigComplex( 1 );
101 b = new BigComplex( -1 );
102 c = BigComplex.CSUM(b,a);
103
104 assertTrue("1 = 1", a.isONE() );
105 assertEquals("1+(-1) = 0",c,BigComplex.ZERO);
106 }
107
108
109 /**
110 * Test random rationals.
111 *
112 */
113 public void testRandom() {
114 a = BigComplex.CRAND( 500 );
115 b = new BigComplex( a.getRe(), a.getIm() );
116 c = BigComplex.CDIF(b,a);
117
118 assertEquals("a-b = 0",c,BigComplex.ZERO);
119
120 d = new BigComplex( b.getRe(), b.getIm() );
121 assertEquals("sign(a-a) = 0", 0, b.compareTo(d) );
122 }
123
124
125 /**
126 * Test addition.
127 *
128 */
129 public void testAddition() {
130 a = BigComplex.CRAND( 100 );
131 b = BigComplex.CSUM( a, a );
132 c = BigComplex.CDIF( b, a );
133
134 assertEquals("a+a-a = a",c,a);
135 assertEquals("a+a-a = a",0,c.compareTo(a));
136
137 d = BigComplex.CSUM( a, BigComplex.ZERO );
138 assertEquals("a+0 = a",d,a);
139 d = BigComplex.CDIF( a, BigComplex.ZERO );
140 assertEquals("a-0 = a",d,a);
141 d = BigComplex.CDIF( a, a );
142 assertEquals("a-a = 0",d,BigComplex.ZERO);
143
144 }
145
146
147 /**
148 * Test multiplication.
149 *
150 */
151 public void testMultiplication() {
152 a = BigComplex.CRAND( 100 );
153 b = BigComplex.CPROD( a, a );
154 c = BigComplex.CQ( b, a );
155
156 assertEquals("a*a/a = a",c,a);
157 assertEquals("a*a/a = a",0,c.compareTo(a));
158
159 d = BigComplex.CPROD( a, BigComplex.ONE );
160 assertEquals("a*1 = a",d,a);
161 d = BigComplex.CQ( a, BigComplex.ONE );
162 assertEquals("a/1 = a",d,a);
163
164 a = BigComplex.CRAND( 100 );
165 b = BigComplex.CINV( a );
166 c = BigComplex.CPROD( a, b );
167
168 assertTrue("a*1/a = 1", c.isONE() );
169 }
170
171
172 /**
173 * Test distributive law.
174 *
175 */
176 public void testDistributive() {
177 BigComplex fac = new BigComplex();
178
179 a = fac.random( 500 );
180 b = fac.random( 500 );
181 c = fac.random( 500 );
182
183 d = a.multiply( b.sum(c) );
184 e = a.multiply( b ).sum( a.multiply(c) );
185
186 assertEquals("a(b+c) = ab+ac",d,e);
187 }
188
189 }