1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.hipparchus.util;
18
19 import static org.junit.Assert.assertEquals;
20
21 import java.util.Arrays;
22 import java.util.Random;
23
24 import org.junit.Test;
25
26 public class KthSelectorTest {
27
28 @Test
29 public void testRandom() {
30
31 final int numIterations = 100000;
32 final double[] possibleValues = {Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, Double.MAX_VALUE, Double.MIN_VALUE, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, -0., 0., 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
33 final Random rnd = new Random(0);
34 for (int i = 0; i < numIterations; ++i) {
35
36 final int dataSize = rnd.nextInt(30);
37
38 final double[] data = new double[dataSize];
39
40 for (int j = 0; j < dataSize; ++j) {
41 data[j] = possibleValues[rnd.nextInt(possibleValues.length)];
42 }
43
44 final double[] dataSorted = Arrays.copyOf(data, data.length);
45 Arrays.sort(dataSorted);
46
47 for (int j = 0; j < dataSize; ++j) {
48
49 final double[] dataTmp = Arrays.copyOf(data, data.length);
50 final double resultKthSelector = new KthSelector().select(dataTmp, null, j);
51 final double resultSort = dataSorted[j];
52 assertEquals(Double.doubleToLongBits(resultKthSelector), Double.doubleToLongBits(resultSort));
53 }
54 }
55 }
56 }