1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
8 import org
.junit
.ClassRule
;
10 import org
.junit
.Test
;
11 import org
.junit
.rules
.TemporaryFolder
;
13 import static org
.assertj
.core
.api
.Assertions
.assertThat
;
15 public class BuiltinComparatorTest
{
18 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE
=
19 new RocksNativeLibraryResource();
22 public TemporaryFolder dbFolder
= new TemporaryFolder();
25 public void builtinForwardComparator()
26 throws RocksDBException
{
27 try (final Options options
= new Options()
28 .setCreateIfMissing(true)
29 .setComparator(BuiltinComparator
.BYTEWISE_COMPARATOR
);
30 final RocksDB rocksDb
= RocksDB
.open(options
,
31 dbFolder
.getRoot().getAbsolutePath())
33 rocksDb
.put("abc1".getBytes(), "abc1".getBytes());
34 rocksDb
.put("abc2".getBytes(), "abc2".getBytes());
35 rocksDb
.put("abc3".getBytes(), "abc3".getBytes());
37 try(final RocksIterator rocksIterator
= rocksDb
.newIterator()) {
38 // Iterate over keys using a iterator
39 rocksIterator
.seekToFirst();
40 assertThat(rocksIterator
.isValid()).isTrue();
41 assertThat(rocksIterator
.key()).isEqualTo(
43 assertThat(rocksIterator
.value()).isEqualTo(
46 assertThat(rocksIterator
.isValid()).isTrue();
47 assertThat(rocksIterator
.key()).isEqualTo(
49 assertThat(rocksIterator
.value()).isEqualTo(
52 assertThat(rocksIterator
.isValid()).isTrue();
53 assertThat(rocksIterator
.key()).isEqualTo(
55 assertThat(rocksIterator
.value()).isEqualTo(
58 assertThat(rocksIterator
.isValid()).isFalse();
60 rocksIterator
.seekToLast();
61 assertThat(rocksIterator
.isValid()).isTrue();
62 assertThat(rocksIterator
.key()).isEqualTo(
64 assertThat(rocksIterator
.value()).isEqualTo(
67 rocksIterator
.seek("abc".getBytes());
68 assertThat(rocksIterator
.isValid()).isTrue();
69 assertThat(rocksIterator
.key()).isEqualTo(
71 assertThat(rocksIterator
.value()).isEqualTo(
78 public void builtinReverseComparator()
79 throws RocksDBException
{
80 try (final Options options
= new Options()
81 .setCreateIfMissing(true)
82 .setComparator(BuiltinComparator
.REVERSE_BYTEWISE_COMPARATOR
);
83 final RocksDB rocksDb
= RocksDB
.open(options
,
84 dbFolder
.getRoot().getAbsolutePath())
87 rocksDb
.put("abc1".getBytes(), "abc1".getBytes());
88 rocksDb
.put("abc2".getBytes(), "abc2".getBytes());
89 rocksDb
.put("abc3".getBytes(), "abc3".getBytes());
91 try (final RocksIterator rocksIterator
= rocksDb
.newIterator()) {
92 // Iterate over keys using a iterator
93 rocksIterator
.seekToFirst();
94 assertThat(rocksIterator
.isValid()).isTrue();
95 assertThat(rocksIterator
.key()).isEqualTo(
97 assertThat(rocksIterator
.value()).isEqualTo(
100 assertThat(rocksIterator
.isValid()).isTrue();
101 assertThat(rocksIterator
.key()).isEqualTo(
103 assertThat(rocksIterator
.value()).isEqualTo(
105 rocksIterator
.next();
106 assertThat(rocksIterator
.isValid()).isTrue();
107 assertThat(rocksIterator
.key()).isEqualTo(
109 assertThat(rocksIterator
.value()).isEqualTo(
111 rocksIterator
.next();
112 assertThat(rocksIterator
.isValid()).isFalse();
114 rocksIterator
.seekToLast();
115 assertThat(rocksIterator
.isValid()).isTrue();
116 assertThat(rocksIterator
.key()).isEqualTo(
118 assertThat(rocksIterator
.value()).isEqualTo(
120 // Will be invalid because abc is after abc1
121 rocksIterator
.seek("abc".getBytes());
122 assertThat(rocksIterator
.isValid()).isFalse();
123 // Will be abc3 because the next one after abc999
125 rocksIterator
.seek("abc999".getBytes());
126 assertThat(rocksIterator
.key()).isEqualTo(
128 assertThat(rocksIterator
.value()).isEqualTo(
135 public void builtinComparatorEnum(){
136 assertThat(BuiltinComparator
.BYTEWISE_COMPARATOR
.ordinal())
139 BuiltinComparator
.REVERSE_BYTEWISE_COMPARATOR
.ordinal())
141 assertThat(BuiltinComparator
.values().length
).isEqualTo(2);
142 assertThat(BuiltinComparator
.valueOf("BYTEWISE_COMPARATOR")).
143 isEqualTo(BuiltinComparator
.BYTEWISE_COMPARATOR
);