001: package JSci.tests;
002:
003: import JSci.GlobalSettings;
004: import JSci.maths.Complex;
005: import JSci.maths.ExtraMath;
006: import junit.framework.*;
007:
008: /**
009: * Testcase for complex numbers.
010: * @author Mark Hale
011: */
012: public class ComplexTest extends
013: junitx.extensions.EqualsHashCodeTestCase {
014: private double x, y;
015: private double u, v;
016:
017: public static void main(String arg[]) {
018: junit.textui.TestRunner.run(suite());
019: }
020:
021: public static Test suite() {
022: return new junit.extensions.RepeatedTest(new TestSuite(
023: ComplexTest.class), 5);
024: }
025:
026: public ComplexTest(String name) {
027: super (name);
028: }
029:
030: protected void setUp() throws Exception {
031: GlobalSettings.ZERO_TOL = 1.0e-9;
032: x = ExtraMath.random(-1.0, 1.0);
033: y = ExtraMath.random(-1.0, 1.0);
034: u = ExtraMath.random(-1.0, 1.0);
035: v = ExtraMath.random(-1.0, 1.0);
036: super .setUp();
037: }
038:
039: protected Object createInstance() {
040: return new Complex(x, y);
041: }
042:
043: protected Object createNotEqualInstance() {
044: return new Complex(u, v);
045: }
046:
047: public void testParseString() {
048: Complex expected = (Complex) createInstance();
049: Complex actual = new Complex(expected.toString());
050: assertEquals(expected, actual);
051: expected = new Complex(0.0, Double.MAX_VALUE);
052: actual = new Complex(expected.toString());
053: assertEquals(expected, actual);
054: expected = new Complex(Double.MIN_VALUE, 0.0);
055: actual = new Complex(expected.toString());
056: assertEquals(expected, actual);
057: }
058:
059: public void testZero() {
060: assertTrue("0 is zero", Complex.ZERO.isZero());
061: Complex delta = (Complex) createInstance();
062: delta = delta.multiply(Math.random() * GlobalSettings.ZERO_TOL
063: / delta.mod());
064: assertTrue("delta is zero", delta.isZero());
065: assertTrue("delta == zero", delta.equals(Complex.ZERO));
066: Complex z = (Complex) createNotEqualInstance();
067: assertTrue("z == z + delta", z.equals(z.add(delta)));
068: }
069:
070: public void testSin() {
071: Complex expected = (Complex) createInstance();
072: Complex actual = Complex.sin(Complex.asin(expected));
073: assertEquals(expected, actual);
074: }
075:
076: public void testCos() {
077: Complex expected = (Complex) createInstance();
078: Complex actual = Complex.cos(Complex.acos(expected));
079: assertEquals(expected, actual);
080: }
081:
082: public void testTan() {
083: Complex expected = (Complex) createInstance();
084: Complex actual = Complex.tan(Complex.atan(expected));
085: assertEquals(expected, actual);
086: }
087:
088: public void testSinh() {
089: Complex expected = (Complex) createInstance();
090: Complex actual = Complex.sinh(Complex.asinh(expected));
091: assertEquals(expected, actual);
092: }
093:
094: public void testCosh() {
095: Complex expected = (Complex) createInstance();
096: Complex actual = Complex.cosh(Complex.acosh(expected));
097: assertEquals(expected, actual);
098: }
099:
100: public void testTanh() {
101: Complex expected = (Complex) createInstance();
102: Complex actual = Complex.tanh(Complex.atanh(expected));
103: assertEquals(expected, actual);
104: }
105: }
|