View Javadoc
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;
18  
19  import java.util.ArrayList;
20  
21  import org.junit.Assert;
22  import org.junit.Test;
23  
24  import org.apache.commons.rng.simple.RandomSource;
25  
26  /**
27   * Tests for {@link CollectionSampler}.
28   */
29  public class CollectionSamplerTest {
30  
31      @Test
32      public void testSampleTrivial() {
33          final ArrayList<String> list = new ArrayList<String>();
34          list.add("Apache");
35          list.add("Commons");
36          list.add("RNG");
37  
38          final CollectionSampler<String> sampler =
39              new CollectionSampler<String>(RandomSource.create(RandomSource.MWC_256),
40                                            list);
41          final String word = sampler.sample();
42          for (String w : list) {
43              if (word.equals(w)) {
44                  return;
45              }
46          }
47          Assert.fail(word + " not in list");
48      }
49  
50      @Test(expected=IllegalArgumentException.class)
51      public void testSamplePrecondition() {
52          // Must fail for empty collection.
53          new CollectionSampler<String>(RandomSource.create(RandomSource.MT),
54                                        new ArrayList<String>());
55      }
56  }