001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.math.random;
018 import junit.framework.Test;
019 import junit.framework.TestSuite;
020 import java.util.Random;
021
022 /**
023 * Test cases for the RandomAdaptor class
024 *
025 * @version $Revision: 796543 $ $Date: 2009-07-21 17:32:38 -0400 (Tue, 21 Jul 2009) $
026 */
027
028 public class RandomAdaptorTest extends RandomDataTest {
029
030 public RandomAdaptorTest(String name) {
031 super(name);
032 }
033
034 public static Test suite() {
035 TestSuite suite = new TestSuite(RandomAdaptorTest.class);
036 suite.setName("RandomAdaptor Tests");
037 return suite;
038 }
039
040 public void testAdaptor() {
041 ConstantGenerator generator = new ConstantGenerator();
042 Random random = RandomAdaptor.createAdaptor(generator);
043 checkConstant(random);
044 RandomAdaptor randomAdaptor = new RandomAdaptor(generator);
045 checkConstant(randomAdaptor);
046 }
047
048 private void checkConstant(Random random) {
049 byte[] bytes = new byte[] {0};
050 random.nextBytes(bytes);
051 assertEquals(0, bytes[0]);
052 assertEquals(false, random.nextBoolean());
053 assertEquals(0, random.nextDouble(), 0);
054 assertEquals(0, random.nextFloat(), 0);
055 assertEquals(0, random.nextGaussian(), 0);
056 assertEquals(0, random.nextInt());
057 assertEquals(0, random.nextInt(1));
058 assertEquals(0, random.nextLong());
059 random.setSeed(100);
060 assertEquals(0, random.nextDouble(), 0);
061 }
062
063 /*
064 * "Constant" generator to test Adaptor delegation.
065 * "Powered by Eclipse ;-)"
066 *
067 */
068 private static class ConstantGenerator implements RandomGenerator {
069
070 public boolean nextBoolean() {
071 return false;
072 }
073
074 public void nextBytes(byte[] bytes) {
075 }
076
077 public double nextDouble() {
078 return 0;
079 }
080
081 public float nextFloat() {
082 return 0;
083 }
084
085 public double nextGaussian() {
086 return 0;
087 }
088
089 public int nextInt() {
090 return 0;
091 }
092
093 public int nextInt(int n) {
094 return 0;
095 }
096
097 public long nextLong() {
098 return 0;
099 }
100
101 public void setSeed(int seed) {
102 }
103
104 public void setSeed(int[] seed) {
105 }
106
107 public void setSeed(long seed) {
108 }
109
110 }
111 }