| 188 | } |
| 189 | |
| 190 | func TestDecoder(t *testing.T) { |
| 191 | N := 10001 |
| 192 | var expected []uint64 |
| 193 | enc := Encoder{BlockSize: 10} |
| 194 | for i := 3; i < N; i += 3 { |
| 195 | enc.Add(uint64(i)) |
| 196 | expected = append(expected, uint64(i)) |
| 197 | } |
| 198 | pack := enc.Done() |
| 199 | defer FreePack(pack) |
| 200 | |
| 201 | dec := Decoder{Pack: pack} |
| 202 | for i := 3; i < N; i += 3 { |
| 203 | uids := dec.Seek(uint64(i), SeekStart) |
| 204 | require.Equal(t, uint64(i), uids[0]) |
| 205 | |
| 206 | uids = dec.Seek(uint64(i-1), SeekStart) |
| 207 | require.Equal(t, uint64(i), uids[0]) |
| 208 | |
| 209 | uids = dec.Seek(uint64(i-2), SeekStart) |
| 210 | require.Equal(t, uint64(i), uids[0]) |
| 211 | |
| 212 | start := i/3 - 1 |
| 213 | actual := Decode(pack, uint64(i)) |
| 214 | require.Equal(t, expected[start:], actual) |
| 215 | |
| 216 | } |
| 217 | } |
| 218 | |
| 219 | func BenchmarkGzip(b *testing.B) { |
| 220 | uids := getUids(1e6) |