public void AdvancedFindPreviousAndNextKeyWorks()
{
using (IKeyValueDB db = new InMemoryKeyValueDB())
{
var key = new byte[2];
const int keysCreated = 10000;
using (var tr = db.StartTransaction())
{
for (int i = 0; i < keysCreated; i++)
{
key[0] = (byte)(i / 256);
key[1] = (byte)(i % 256);
tr.CreateKey(key);
}
tr.Commit();
}
using (var tr = db.StartTransaction())
{
Assert.Equal(-1, tr.GetKeyIndex());
tr.FindExactKey(key);
Assert.Equal(keysCreated - 1, tr.GetKeyIndex());
for (int i = 1; i < keysCreated; i++)
{
Assert.True(tr.FindPreviousKey());
Assert.Equal(keysCreated - 1 - i, tr.GetKeyIndex());
}
Assert.False(tr.FindPreviousKey());
Assert.Equal(-1, tr.GetKeyIndex());
for (int i = 0; i < keysCreated; i++)
{
Assert.True(tr.FindNextKey());
Assert.Equal(i, tr.GetKeyIndex());
}
Assert.False(tr.FindNextKey());
Assert.Equal(-1, tr.GetKeyIndex());
}
}
}