1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.rng.core;
18
19 import org.junit.Test;
20 import org.junit.Assert;
21 import org.junit.Assume;
22
23
24
25
26
27
28
29
30
31 public class BaseProviderTest {
32 @Test(expected = IllegalStateException.class)
33 public void testStateSizeTooSmall() {
34 final DummyGenerator dummy = new DummyGenerator();
35 final int size = dummy.getStateSize();
36 Assume.assumeTrue(size > 0);
37 dummy.restoreState(new RandomProviderDefaultState(new byte[size - 1]));
38 }
39
40 @Test(expected = IllegalStateException.class)
41 public void testStateSizeTooLarge() {
42 final DummyGenerator dummy = new DummyGenerator();
43 final int size = dummy.getStateSize();
44 dummy.restoreState(new RandomProviderDefaultState(new byte[size + 1]));
45 }
46
47 @Test
48 public void testFillStateInt() {
49 final int[] state = new int[10];
50 final int[] seed = {1, 2, 3};
51
52 for (int i = 0; i < state.length; i++) {
53 Assert.assertEquals(0, state[i]);
54 }
55
56 new DummyGenerator().fillState(state, seed);
57 for (int i = 0; i < seed.length; i++) {
58 Assert.assertEquals(seed[i], state[i]);
59 }
60 for (int i = seed.length; i < state.length; i++) {
61 Assert.assertNotEquals(0, state[i]);
62 }
63 }
64
65 @Test
66 public void testFillStateLong() {
67 final long[] state = new long[10];
68 final long[] seed = {1, 2, 3};
69
70 for (int i = 0; i < state.length; i++) {
71 Assert.assertEquals(0, state[i]);
72 }
73
74 new DummyGenerator().fillState(state, seed);
75 for (int i = 0; i < seed.length; i++) {
76 Assert.assertEquals(seed[i], state[i]);
77 }
78 for (int i = seed.length; i < state.length; i++) {
79 Assert.assertNotEquals(0, state[i]);
80 }
81 }
82
83
84
85
86
87
88
89
90 static class DummyGenerator extends org.apache.commons.rng.core.source32.IntProvider {
91
92 @Override
93 public int next() {
94 return 4;
95 }
96
97
98
99
100
101
102 int getStateSize() {
103 return getStateInternal().length;
104 }
105
106
107
108
109 @Override
110 public void fillState(int[] state, int[] seed) {
111 super.fillState(state, seed);
112 }
113
114
115 @Override
116 public void fillState(long[] state, long[] seed) {
117 super.fillState(state, seed);
118 }
119 }
120 }