forked from fast-pack/JavaFastPFOR
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeltaZigzagEncodingTest.java
More file actions
121 lines (110 loc) · 3.38 KB
/
Copy pathDeltaZigzagEncodingTest.java
File metadata and controls
121 lines (110 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
* This code is released under the
* Apache License Version 2.0 http://www.apache.org/licenses/.
*/
package me.lemire.integercompression;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author lemire
*
*/
@SuppressWarnings({ "static-method" })
public class DeltaZigzagEncodingTest {
protected static int zigzagEncode(DeltaZigzagEncoding.Encoder e, int value) {
e.setContextValue(0);
return e.encodeInt(value);
}
protected static int zigzagDecode(DeltaZigzagEncoding.Decoder d, int value) {
d.setContextValue(0);
return d.decodeInt(value);
}
protected static void checkEncode(
DeltaZigzagEncoding.Encoder e,
int[] data,
int[] expected)
{
assertArrayEquals(expected, e.encodeArray(data));
assertEquals(data[data.length - 1], e.getContextValue());
}
protected static void checkDecode(
DeltaZigzagEncoding.Decoder d,
int[] data,
int[] expected)
{
int[] r = d.decodeArray(data);
assertArrayEquals(expected, r);
assertEquals(r[r.length - 1], d.getContextValue());
}
/**
*
*/
@Test
public void checkZigzagEncode() {
DeltaZigzagEncoding.Encoder e = new DeltaZigzagEncoding.Encoder(0);
assertEquals(0, zigzagEncode(e, 0));
assertEquals(2, zigzagEncode(e, 1));
assertEquals(4, zigzagEncode(e, 2));
assertEquals(6, zigzagEncode(e, 3));
assertEquals(1, zigzagEncode(e, -1));
assertEquals(3, zigzagEncode(e, -2));
assertEquals(5, zigzagEncode(e, -3));
}
/**
*
*/
@Test
public void checkZigzagDecoder() {
DeltaZigzagEncoding.Decoder d = new DeltaZigzagEncoding.Decoder(0);
assertEquals( 0, zigzagDecode(d, 0));
assertEquals(-1, zigzagDecode(d, 1));
assertEquals( 1, zigzagDecode(d, 2));
assertEquals(-2, zigzagDecode(d, 3));
assertEquals( 2, zigzagDecode(d, 4));
assertEquals(-3, zigzagDecode(d, 5));
}
/**
*
*/
@Test
public void checkEncodeSimple() {
DeltaZigzagEncoding.Encoder e = new DeltaZigzagEncoding.Encoder(0);
checkEncode(e,
new int[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
new int[]{ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2 });
}
/**
*
*/
@Test
public void checkDecodeSimple() {
DeltaZigzagEncoding.Decoder d = new DeltaZigzagEncoding.Decoder(0);
checkDecode(d,
new int[]{ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
new int[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
}
protected static class SpotChecker {
private final static DeltaZigzagEncoding.Encoder encoder =
new DeltaZigzagEncoding.Encoder(0);
private final static DeltaZigzagEncoding.Decoder decoder =
new DeltaZigzagEncoding.Decoder(0);
public void check(int value) {
SpotChecker.encoder.setContextValue(0);
SpotChecker.decoder.setContextValue(0);
int value2 = SpotChecker.decoder.decodeInt(SpotChecker.encoder.encodeInt(value));
assertEquals(value, value2);
}
}
/**
*
*/
@Test
public void checkSpots() {
SpotChecker c = new SpotChecker();
c.check(0);
c.check(1);
c.check(1375228800);
c.check(1 << 30);
c.check(1 << 31);
}
}