@Test
void testGet() {

    final List<UID> uids = Arrays.asList(uid1, uid2, uid3);
    // Load some non-contiguous ranges for different mapDefinitionUids
    for (int i = 0; i < uids.size(); i++) {
        LOGGER.debug("Iteration {}, loading for UID {}", i, uids.get(i));
        rangeStoreDb.put(key(uids.get(i), 1, 11), val((i * 10) + 1), false);
        rangeStoreDb.put(key(uids.get(i), 11, 13), val((i * 10) + 2), false);
        rangeStoreDb.put(key(uids.get(i), 13, 21), val((i * 10) + 3), false);
        // gap in ranges
        rangeStoreDb.put(key(uids.get(i), 101, 201), val((i * 10) + 4), false);
        rangeStoreDb.put(key(uids.get(i), 201, 301), val((i * 10) + 5), false);
    }
    rangeStoreDb.logRawDatabaseContents();
    rangeStoreDb.logDatabaseContents();
    // now try and get some keys
    LmdbUtils.doWithReadTxn(lmdbEnv, txn -> {
        for (int i = 0; i < uids.size(); i++) {
            LOGGER.debug("Iteration {}, testing with UID {}", i, uids.get(i));
            getAndAssert(txn, uids.get(i), 1, (i * 10) + 1); // on range start
            getAndAssert(txn, uids.get(i), 5, (i * 10) + 1); // in range middle
            getAndAssert(txn, uids.get(i), 10, (i * 10) + 1); // on range end
            getAndAssert(txn, uids.get(i), 11, (i * 10) + 2); // on range start
            getAndAssert(txn, uids.get(i), 300, (i * 10) + 5); // on range end
            getAndAssertNotFound(txn, uids.get(i), 0); // not in a range
            getAndAssertNotFound(txn, uids.get(i), 50); // not in a range
            getAndAssertNotFound(txn, uids.get(i), 301); // not in a range
        }
    });
}