1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.rng.core.source64;
18
19 import org.junit.Assert;
20 import org.junit.Test;
21
22
23
24
25
26
27 public class LongProviderTest {
28
29
30
31
32 static final class FixedLongProvider extends LongProvider {
33
34 private long value;
35
36
37
38
39 public FixedLongProvider(long value) {
40 this.value = value;
41 }
42
43 @Override
44 public long next() {
45 return value;
46 }
47 }
48
49
50
51
52
53 static final class FlipLongProvider extends LongProvider {
54
55 private long value;
56
57
58
59
60 public FlipLongProvider(long value) {
61
62 this.value = ~value;
63 }
64
65 @Override
66 public long next() {
67
68 value = ~value;
69 return value;
70 }
71 }
72
73
74
75
76
77 @Test
78 public void testNextInt() {
79 final int MAX = 5;
80 for (int i = 0; i < MAX; i++) {
81 for (int j = 0; j < MAX; j++) {
82
83 final long value = (((long) i) << 32) | (j & 0xffffffffL);
84 final LongProvider provider = new FixedLongProvider(value);
85 Assert.assertEquals("1st call not the upper 32-bits", i, provider.nextInt());
86 Assert.assertEquals("2nd call not the lower 32-bits", j, provider.nextInt());
87 Assert.assertEquals("3rd call not the upper 32-bits", i, provider.nextInt());
88 Assert.assertEquals("4th call not the lower 32-bits", j, provider.nextInt());
89 }
90 }
91 }
92
93
94
95
96
97
98
99 @Test
100 public void testNextBoolean() {
101 for (int i = 0; i < Long.SIZE; i++) {
102
103 final long value = 1L << i;
104 final LongProvider provider = new FlipLongProvider(value);
105
106 for (int j = 0; j < Long.SIZE; j++) {
107 final boolean expected = (i == j);
108 Assert.assertEquals("Pass 1, bit " + j, expected, provider.nextBoolean());
109 }
110
111 for (int j = 0; j < Long.SIZE; j++) {
112 final boolean expected = (i != j);
113 Assert.assertEquals("Pass 2, bit " + j, expected, provider.nextBoolean());
114 }
115 }
116 }
117 }