1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.rng.sampling.distribution;
18
19 import org.apache.commons.rng.UniformRandomProvider;
20 import org.apache.commons.rng.sampling.RandomAssert;
21 import org.apache.commons.rng.simple.RandomSource;
22 import org.junit.Assert;
23 import org.junit.Test;
24
25
26 /**
27 * This test checks the {@link PoissonSampler} can be created
28 * from a saved state.
29 */
30 public class PoissonSamplerTest {
31 /**
32 * Test the SharedStateSampler implementation with a mean below 40.
33 */
34 @Test
35 public void testSharedStateSamplerWithSmallMean() {
36 testSharedStateSampler(34.5);
37 }
38
39 /**
40 * Test the SharedStateSampler implementation with a mean above 40.
41 */
42 @Test
43 public void testSharedStateSamplerWithLargeMean() {
44 testSharedStateSampler(67.8);
45 }
46
47 /**
48 * Test the SharedStateSampler implementation.
49 *
50 * @param mean Mean.
51 */
52 private static void testSharedStateSampler(double mean) {
53 final UniformRandomProvider rng1 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L);
54 final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L);
55 // Use instance constructor not factory constructor to exercise 1.X public API
56 final SharedStateDiscreteSampler sampler1 =
57 new PoissonSampler(rng1, mean);
58 final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2);
59 RandomAssert.assertProduceSameSequence(sampler1, sampler2);
60 }
61
62 /**
63 * Test the toString method. This is added to ensure coverage as the factory constructor
64 * used in other tests does not create an instance of the wrapper class.
65 */
66 @Test
67 public void testToString() {
68 final UniformRandomProvider rng = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L);
69 Assert.assertTrue(new PoissonSampler(rng, 1.23).toString().toLowerCase().contains("poisson"));
70 }
71 }