/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.impl;
import java.util.*;
import org.jgap.*;
import junit.framework.*;
import java.util.concurrent.atomic.*;
/**
* Tests the CauchyRandomGenerator class.
*
* @author Klaus Meffert
* @since 1.1
*/
public class CauchyRandomGeneratorTest
extends JGAPTestCase {
/** String containing the CVS revision. Read out via reflection!*/
private static final String CVS_REVISION = "$Revision: 1.11 $";
public static Test suite() {
TestSuite suite = new TestSuite(CauchyRandomGeneratorTest.class);
return suite;
}
/**
* Check if construction and calculation possible in general.
*
* @author Klaus Meffert
*/
public void testGeneral() {
RandomGenerator calc = new CauchyRandomGenerator();
calc.nextInt();
calc.nextBoolean();
calc.nextDouble();
calc.nextFloat();
calc.nextInt();
calc.nextLong();
}
/**
* @throws Exception
*
* @author Klaus Meffert
*/
public void testNextCauchy_0()
throws Exception {
final double stdDev = 0.04d;
CauchyRandomGenerator calc = new CauchyRandomGenerator(0.0d, stdDev);
calc.nextCauchy();
}
/**
* @author Klaus Meffert
* @since 2.2
*/
public void testGetCauchyStdDeviation_0() {
final double stdDev = 0.04d;
CauchyRandomGenerator calc = new CauchyRandomGenerator(0.0d, stdDev);
assertEquals(stdDev, calc.getCauchyStandardDeviation(), DELTA);
}
/**
* @author Klaus Meffert
* @since 2.6
*/
public void testNextInt_0() {
final double stdDev = 0.04d;
CauchyRandomGenerator calc = new CauchyRandomGenerator(0.0d, stdDev);
int i = calc.nextInt(2);
assertTrue(i < 2 && i >= 0);
i = calc.nextInt(1);
assertEquals(0, i);
}
/**
* Tests serializability capabilities.
*
* @throws Exception
*
* @author Klaus Meffert
* @since 3.01
*/
public void testSerialize_0() throws Exception {
/**@todo fix test as Java 5 uses java.util.concurrent.AtomicLong instead
* of sun.misc.AtomicLong
*/
CauchyRandomGenerator srg = new CauchyRandomGenerator();
Random r1 = (Random)privateAccessor.getField(srg,"m_rn");
AtomicLong seed1 = (AtomicLong)privateAccessor.getField(r1,"seed");
long curr = System.currentTimeMillis();
while (curr == System.currentTimeMillis());
CauchyRandomGenerator srg2 = (CauchyRandomGenerator)doSerialize(srg);
Random r2 = (Random)privateAccessor.getField(srg2,"m_rn");
AtomicLong seed2 = (AtomicLong)privateAccessor.getField(r2,"seed");
assertFalse(seed1.get() == seed2.get());
}
}