|
48 | 48 | import static org.lmdbjava.PutFlags.MDB_NODUPDATA;
|
49 | 49 | import static org.lmdbjava.PutFlags.MDB_NOOVERWRITE;
|
50 | 50 | import static org.lmdbjava.SeekOp.MDB_FIRST;
|
| 51 | +import static org.lmdbjava.SeekOp.MDB_GET_BOTH; |
51 | 52 | import static org.lmdbjava.TestUtils.DB_1;
|
52 | 53 | import static org.lmdbjava.TestUtils.POSIX_MODE;
|
53 | 54 | import static org.lmdbjava.TestUtils.bb;
|
@@ -172,6 +173,27 @@ public void delete() {
|
172 | 173 | }
|
173 | 174 | }
|
174 | 175 |
|
| 176 | + @Test |
| 177 | + public void getKeyVal() { |
| 178 | + final Dbi<ByteBuffer> db = env.openDbi(DB_1, MDB_CREATE, MDB_DUPSORT); |
| 179 | + try (Txn<ByteBuffer> txn = env.txnWrite(); |
| 180 | + Cursor<ByteBuffer> c = db.openCursor(txn)) { |
| 181 | + c.put(bb(1), bb(2), MDB_APPENDDUP); |
| 182 | + c.put(bb(1), bb(4), MDB_APPENDDUP); |
| 183 | + c.put(bb(1), bb(6), MDB_APPENDDUP); |
| 184 | + c.put(bb(2), bb(1), MDB_APPENDDUP); |
| 185 | + c.put(bb(2), bb(2), MDB_APPENDDUP); |
| 186 | + c.put(bb(2), bb(3), MDB_APPENDDUP); |
| 187 | + c.put(bb(2), bb(4), MDB_APPENDDUP); |
| 188 | + assertThat(c.get(bb(1), bb(2), MDB_GET_BOTH), is(true)); |
| 189 | + assertThat(c.count(), is(3L)); |
| 190 | + assertThat(c.get(bb(1), bb(3), MDB_GET_BOTH), is(false)); |
| 191 | + assertThat(c.get(bb(2), bb(1), MDB_GET_BOTH), is(true)); |
| 192 | + assertThat(c.count(), is(4L)); |
| 193 | + assertThat(c.get(bb(2), bb(0), MDB_GET_BOTH), is(false)); |
| 194 | + } |
| 195 | + } |
| 196 | + |
175 | 197 | @Test
|
176 | 198 | public void putMultiple() {
|
177 | 199 | final Dbi<ByteBuffer> db = env.openDbi(DB_1, MDB_CREATE, MDB_DUPSORT,
|
|
0 commit comments