1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.rng.sampling;
18
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.Collections;
22 import java.util.List;
23 import org.apache.commons.rng.UniformRandomProvider;
24 import org.junit.jupiter.api.Assertions;
25 import org.junit.jupiter.api.Test;
26
27
28
29
30 class CollectionSamplerTest {
31
32 @Test
33 void testSampleTrivial() {
34 final ArrayList<String> list = new ArrayList<>();
35 list.add("Apache");
36 list.add("Commons");
37 list.add("RNG");
38
39 final CollectionSampler<String> sampler =
40 new CollectionSampler<>(RandomAssert.createRNG(), list);
41 final String word = sampler.sample();
42 for (final String w : list) {
43 if (word.equals(w)) {
44 return;
45 }
46 }
47 Assertions.fail(word + " not in list");
48 }
49
50 @Test
51 void testSamplePrecondition() {
52 final UniformRandomProvider rng = RandomAssert.seededRNG();
53
54 final List<String> empty = Collections.emptyList();
55 Assertions.assertThrows(IllegalArgumentException.class,
56 () -> new CollectionSampler<>(rng, empty));
57 }
58
59
60
61
62 @Test
63 void testSharedStateSampler() {
64 final UniformRandomProvider rng1 = RandomAssert.seededRNG();
65 final UniformRandomProvider rng2 = RandomAssert.seededRNG();
66 final List<String> list = Arrays.asList("Apache", "Commons", "RNG");
67 final CollectionSampler<String> sampler1 =
68 new CollectionSampler<>(rng1, list);
69 final CollectionSampler<String> sampler2 = sampler1.withUniformRandomProvider(rng2);
70 RandomAssert.assertProduceSameSequence(sampler1, sampler2);
71 }
72 }