Skip to content

Commit 838f809

Browse files
author
lrhodes
committed
Improved tuple unit tests
1 parent 6a7f10a commit 838f809

8 files changed

Lines changed: 351 additions & 152 deletions

src/main/java/com/yahoo/sketches/tuple/DirectArrayOfDoublesQuickSelectSketchR.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66

77
final class DirectArrayOfDoublesQuickSelectSketchR extends DirectArrayOfDoublesQuickSelectSketch {
88

9-
DirectArrayOfDoublesQuickSelectSketchR(final int nomEntries, final int lgResizeFactor,
10-
final float samplingProbability, final int numValues, final long seed, final WritableMemory dstMem) {
11-
super(nomEntries, lgResizeFactor, samplingProbability, numValues, seed, dstMem);
12-
}
13-
149
DirectArrayOfDoublesQuickSelectSketchR(final Memory mem, final long seed) {
1510
super((WritableMemory) mem, seed);
1611
}

src/main/java/com/yahoo/sketches/tuple/DirectArrayOfDoublesUnionR.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55

66
final class DirectArrayOfDoublesUnionR extends DirectArrayOfDoublesUnion {
77

8-
DirectArrayOfDoublesUnionR(final int nomEntries, final int numValues, final long seed,
9-
final WritableMemory dstMem) {
10-
super(nomEntries, numValues, seed, dstMem);
11-
}
12-
138
/**
149
* Wraps the given Memory.
1510
* @param mem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>

src/test/java/com/yahoo/sketches/tuple/ArrayOfDoublesUnionTest.java

Lines changed: 74 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,17 @@ public void heapExactMode() {
4242
Assert.assertEquals(values[0][0], 3.0);
4343
Assert.assertEquals(values[1][0], 3.0);
4444
Assert.assertEquals(values[2][0], 3.0);
45-
45+
46+
WritableMemory wmem = WritableMemory.wrap(union.toByteArray());
47+
ArrayOfDoublesUnion wrappedUnion = ArrayOfDoublesSketches.wrapUnion(wmem);
48+
result = wrappedUnion.getResult();
49+
Assert.assertEquals(result.getEstimate(), 3.0);
50+
values = result.getValues();
51+
Assert.assertEquals(values[0][0], 3.0);
52+
Assert.assertEquals(values[1][0], 3.0);
53+
Assert.assertEquals(values[2][0], 3.0);
54+
55+
4656
union.reset();
4757
result = union.getResult();
4858
Assert.assertTrue(result.isEmpty());
@@ -57,11 +67,15 @@ public void heapExactMode() {
5767
public void heapEstimationMode() {
5868
int key = 0;
5969
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().build();
60-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
70+
for (int i = 0; i < 8192; i++) {
71+
sketch1.update(key++, new double[] {1.0});
72+
}
6173

6274
key -= 4096; // overlap half of the entries
6375
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().build();
64-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
76+
for (int i = 0; i < 8192; i++) {
77+
sketch2.update(key++, new double[] {1.0});
78+
}
6579

6680
ArrayOfDoublesUnion union = new ArrayOfDoublesSetOperationBuilder().buildUnion();
6781
union.update(sketch1);
@@ -70,7 +84,7 @@ public void heapEstimationMode() {
7084
Assert.assertFalse(result.isEmpty());
7185
Assert.assertTrue(result.isEstimationMode());
7286
Assert.assertEquals(result.getEstimate(), 12288.0, 12288 * 0.01);
73-
87+
7488
union.reset();
7589
result = union.getResult();
7690
Assert.assertTrue(result.isEmpty());
@@ -85,11 +99,15 @@ public void heapEstimationMode() {
8599
public void heapEstimationModeFullOverlapTwoValuesAndDownsizing() {
86100
int key = 0;
87101
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().setNumberOfValues(2).build();
88-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0, 2.0});
102+
for (int i = 0; i < 8192; i++) {
103+
sketch1.update(key++, new double[] {1.0, 2.0});
104+
}
89105

90106
key = 0; // full overlap
91107
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().setNumberOfValues(2).build();
92-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0, 2.0});
108+
for (int i = 0; i < 8192; i++) {
109+
sketch2.update(key++, new double[] {1.0, 2.0});
110+
}
93111

94112
ArrayOfDoublesUnion union = new ArrayOfDoublesSetOperationBuilder().setNumberOfValues(2).setNominalEntries(1024).buildUnion();
95113
union.update(sketch1);
@@ -111,11 +129,15 @@ public void heapEstimationModeFullOverlapTwoValuesAndDownsizing() {
111129
public void heapMixedMode() {
112130
int key = 0;
113131
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().build();
114-
for (int i = 0; i < 1000; i++) sketch1.update(key++, new double[] {1.0});
132+
for (int i = 0; i < 1000; i++) {
133+
sketch1.update(key++, new double[] {1.0});
134+
}
115135

116136
key -= 500; // overlap half of the entries
117137
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().setSamplingProbability(0.2f).build();
118-
for (int i = 0; i < 20000; i++) sketch2.update(key++, new double[] {1.0});
138+
for (int i = 0; i < 20000; i++) {
139+
sketch2.update(key++, new double[] {1.0});
140+
}
119141

120142
ArrayOfDoublesUnion union = new ArrayOfDoublesSetOperationBuilder().buildUnion();
121143
union.update(sketch1);
@@ -130,11 +152,15 @@ public void heapMixedMode() {
130152
public void heapSerializeDeserialize() {
131153
int key = 0;
132154
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().build();
133-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
155+
for (int i = 0; i < 8192; i++) {
156+
sketch1.update(key++, new double[] {1.0});
157+
}
134158

135159
key -= 4096; // overlap half of the entries
136160
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().build();
137-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
161+
for (int i = 0; i < 8192; i++) {
162+
sketch2.update(key++, new double[] {1.0});
163+
}
138164

139165
ArrayOfDoublesUnion union1 = new ArrayOfDoublesSetOperationBuilder().buildUnion();
140166
union1.update(sketch1);
@@ -143,7 +169,7 @@ public void heapSerializeDeserialize() {
143169
ArrayOfDoublesUnion union2 = ArrayOfDoublesUnion.heapify(Memory.wrap(union1.toByteArray()));
144170
ArrayOfDoublesCompactSketch result = union2.getResult();
145171
Assert.assertEquals(result.getEstimate(), 12288.0, 12288 * 0.01);
146-
172+
147173
union2.reset();
148174
result = union2.getResult();
149175
Assert.assertTrue(result.isEmpty());
@@ -153,7 +179,9 @@ public void heapSerializeDeserialize() {
153179
Assert.assertEquals(result.getLowerBound(1), 0.0);
154180
Assert.assertEquals(result.getTheta(), 1.0);
155181
double[][] values = result.getValues();
156-
for (int i = 0; i < values.length; i++) Assert.assertEquals(values[i][0], 2.0);
182+
for (int i = 0; i < values.length; i++) {
183+
Assert.assertEquals(values[i][0], 2.0);
184+
}
157185
}
158186

159187
@Test
@@ -162,7 +190,7 @@ public void heapDeserializeV0_9_1() throws Exception {
162190
ArrayOfDoublesUnion union2 = ArrayOfDoublesUnion.heapify(Memory.wrap(bytes));
163191
ArrayOfDoublesCompactSketch result = union2.getResult();
164192
Assert.assertEquals(result.getEstimate(), 12288.0, 12288 * 0.01);
165-
193+
166194
union2.reset();
167195
result = union2.getResult();
168196
Assert.assertTrue(result.isEmpty());
@@ -172,19 +200,25 @@ public void heapDeserializeV0_9_1() throws Exception {
172200
Assert.assertEquals(result.getLowerBound(1), 0.0);
173201
Assert.assertEquals(result.getTheta(), 1.0);
174202
double[][] values = result.getValues();
175-
for (int i = 0; i < values.length; i++) Assert.assertEquals(values[i][0], 2.0);
203+
for (int i = 0; i < values.length; i++) {
204+
Assert.assertEquals(values[i][0], 2.0);
205+
}
176206
}
177207

178208
@Test
179209
public void heapSerializeDeserializeWithSeed() {
180210
long seed = 1;
181211
int key = 0;
182212
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().setSeed(seed).build();
183-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
213+
for (int i = 0; i < 8192; i++) {
214+
sketch1.update(key++, new double[] {1.0});
215+
}
184216

185217
key -= 4096; // overlap half of the entries
186218
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().setSeed(seed).build();
187-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
219+
for (int i = 0; i < 8192; i++) {
220+
sketch2.update(key++, new double[] {1.0});
221+
}
188222

189223
ArrayOfDoublesUnion union1 = new ArrayOfDoublesSetOperationBuilder().setSeed(seed).buildUnion();
190224
union1.update(sketch1);
@@ -200,12 +234,16 @@ public void directSerializeDeserialize() {
200234
int key = 0;
201235
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().build(
202236
WritableMemory.wrap(new byte[1000000]));
203-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
237+
for (int i = 0; i < 8192; i++) {
238+
sketch1.update(key++, new double[] {1.0});
239+
}
204240

205241
key -= 4096; // overlap half of the entries
206242
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().build(
207243
WritableMemory.wrap(new byte[1000000]));
208-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
244+
for (int i = 0; i < 8192; i++) {
245+
sketch2.update(key++, new double[] {1.0});
246+
}
209247

210248
ArrayOfDoublesUnion union1 = new ArrayOfDoublesSetOperationBuilder().buildUnion(
211249
WritableMemory.wrap(new byte[1000000]));
@@ -215,7 +253,7 @@ public void directSerializeDeserialize() {
215253
ArrayOfDoublesUnion union2 = ArrayOfDoublesUnion.wrap(WritableMemory.wrap(union1.toByteArray()));
216254
ArrayOfDoublesCompactSketch result = union2.getResult(WritableMemory.wrap(new byte[1000000]));
217255
Assert.assertEquals(result.getEstimate(), 12288.0, 12288 * 0.01);
218-
256+
219257
union2.reset();
220258
result = union2.getResult();
221259
Assert.assertTrue(result.isEmpty());
@@ -225,7 +263,9 @@ public void directSerializeDeserialize() {
225263
Assert.assertEquals(result.getLowerBound(1), 0.0);
226264
Assert.assertEquals(result.getTheta(), 1.0);
227265
double[][] values = result.getValues();
228-
for (int i = 0; i < values.length; i++) Assert.assertEquals(values[i][0], 2.0);
266+
for (int i = 0; i < values.length; i++) {
267+
Assert.assertEquals(values[i][0], 2.0);
268+
}
229269
}
230270

231271
@Test
@@ -234,12 +274,16 @@ public void directSerializeDeserializeWithSeed() {
234274
int key = 0;
235275
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().setSeed(seed)
236276
.build(WritableMemory.wrap(new byte[1000000]));
237-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
277+
for (int i = 0; i < 8192; i++) {
278+
sketch1.update(key++, new double[] {1.0});
279+
}
238280

239281
key -= 4096; // overlap half of the entries
240282
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().setSeed(seed)
241283
.build(WritableMemory.wrap(new byte[1000000]));
242-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
284+
for (int i = 0; i < 8192; i++) {
285+
sketch2.update(key++, new double[] {1.0});
286+
}
243287

244288
ArrayOfDoublesUnion union1 = new ArrayOfDoublesSetOperationBuilder().setSeed(seed)
245289
.buildUnion(WritableMemory.wrap(new byte[1000000]));
@@ -275,7 +319,7 @@ public void directExactMode() {
275319
Assert.assertEquals(values[0][0], 3.0);
276320
Assert.assertEquals(values[1][0], 3.0);
277321
Assert.assertEquals(values[2][0], 3.0);
278-
322+
279323
union.reset();
280324
result = union.getResult();
281325
Assert.assertTrue(result.isEmpty());
@@ -290,18 +334,22 @@ public void directExactMode() {
290334
public void directEstimationMode() {
291335
int key = 0;
292336
ArrayOfDoublesUpdatableSketch sketch1 = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
293-
for (int i = 0; i < 8192; i++) sketch1.update(key++, new double[] {1.0});
337+
for (int i = 0; i < 8192; i++) {
338+
sketch1.update(key++, new double[] {1.0});
339+
}
294340

295341
key -= 4096; // overlap half of the entries
296342
ArrayOfDoublesUpdatableSketch sketch2 = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
297-
for (int i = 0; i < 8192; i++) sketch2.update(key++, new double[] {1.0});
343+
for (int i = 0; i < 8192; i++) {
344+
sketch2.update(key++, new double[] {1.0});
345+
}
298346

299347
ArrayOfDoublesUnion union = new ArrayOfDoublesSetOperationBuilder().buildUnion(WritableMemory.wrap(new byte[1000000]));
300348
union.update(sketch1);
301349
union.update(sketch2);
302350
ArrayOfDoublesCompactSketch result = union.getResult(WritableMemory.wrap(new byte[1000000]));
303351
Assert.assertEquals(result.getEstimate(), 12288.0, 12288 * 0.01);
304-
352+
305353
union.reset();
306354
result = union.getResult();
307355
Assert.assertTrue(result.isEmpty());

src/test/java/com/yahoo/sketches/tuple/DirectArrayOfDoublesCompactSketchTest.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package com.yahoo.sketches.tuple;
66

7+
import static com.yahoo.sketches.Util.DEFAULT_UPDATE_SEED;
8+
79
import org.testng.Assert;
810
import org.testng.annotations.Test;
911

@@ -14,7 +16,8 @@ public class DirectArrayOfDoublesCompactSketchTest {
1416

1517
@Test
1618
public void emptyFromQuickSelectSketch() {
17-
ArrayOfDoublesUpdatableSketch us = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
19+
ArrayOfDoublesUpdatableSketch us =
20+
new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
1821
ArrayOfDoublesCompactSketch sketch = us.compact(WritableMemory.wrap(new byte[1000000]));
1922
Assert.assertTrue(sketch.isEmpty());
2023
Assert.assertFalse(sketch.isEstimationMode());
@@ -34,7 +37,8 @@ public void emptyFromQuickSelectSketch() {
3437

3538
@Test
3639
public void exactModeFromQuickSelectSketch() {
37-
ArrayOfDoublesUpdatableSketch us = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
40+
ArrayOfDoublesUpdatableSketch us =
41+
new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
3842
us.update(1, new double[] {1.0});
3943
us.update(2, new double[] {1.0});
4044
us.update(3, new double[] {1.0});
@@ -50,9 +54,12 @@ public void exactModeFromQuickSelectSketch() {
5054
Assert.assertEquals(sketch.getRetainedEntries(), 3);
5155
Assert.assertEquals(sketch.getThetaLong(), Long.MAX_VALUE);
5256
Assert.assertEquals(sketch.getTheta(), 1.0);
57+
Assert.assertEquals(sketch.getSeedHash(), Util.computeSeedHash(DEFAULT_UPDATE_SEED));
5358
double[][] values = sketch.getValues();
5459
Assert.assertEquals(values.length, 3);
55-
for (double[] array: values) Assert.assertEquals(array[0], 2.0);
60+
for (double[] array: values) {
61+
Assert.assertEquals(array[0], 2.0);
62+
}
5663
}
5764

5865
@Test
@@ -73,13 +80,17 @@ public void serializeDeserializeSmallExact() {
7380
Assert.assertEquals(sketch2.getTheta(), 1.0);
7481
double[][] values = sketch2.getValues();
7582
Assert.assertEquals(values.length, 3);
76-
for (double[] array: values) Assert.assertEquals(array[0], 1.0);
83+
for (double[] array: values) {
84+
Assert.assertEquals(array[0], 1.0);
85+
}
7786
}
7887

7988
@Test
8089
public void serializeDeserializeEstimation() {
8190
ArrayOfDoublesUpdatableSketch us = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
82-
for (int i = 0; i < 8192; i++) us.update(i, new double[] {1.0});
91+
for (int i = 0; i < 8192; i++) {
92+
us.update(i, new double[] {1.0});
93+
}
8394
ArrayOfDoublesCompactSketch sketch1 = us.compact(WritableMemory.wrap(new byte[1000000]));
8495
ArrayOfDoublesSketch sketch2 = ArrayOfDoublesSketches.wrapSketch(WritableMemory.wrap(sketch1.toByteArray()));
8596
Assert.assertFalse(sketch2.isEmpty());
@@ -91,7 +102,9 @@ public void serializeDeserializeEstimation() {
91102
@Test(expectedExceptions = SketchesArgumentException.class)
92103
public void deserializeWithWrongSeed() {
93104
ArrayOfDoublesUpdatableSketch us = new ArrayOfDoublesUpdatableSketchBuilder().build(WritableMemory.wrap(new byte[1000000]));
94-
for (int i = 0; i < 8192; i++) us.update(i, new double[] {1.0});
105+
for (int i = 0; i < 8192; i++) {
106+
us.update(i, new double[] {1.0});
107+
}
95108
ArrayOfDoublesCompactSketch sketch1 = us.compact(WritableMemory.wrap(new byte[1000000]));
96109
ArrayOfDoublesSketches.wrapSketch(WritableMemory.wrap(sketch1.toByteArray()), 123);
97110
}

0 commit comments

Comments
 (0)