Skip to content

Commit b6db0b4

Browse files
authored
Merge pull request #125 from CoreyKaylor/cursor-api-changes
Reworked api to be more in line with native lib, exposed 0-copy read options.
2 parents 46432b4 + 14cbb67 commit b6db0b4

22 files changed

+975
-979
lines changed

src/LightningDB.Tests/CursorTests.cs

Lines changed: 273 additions & 159 deletions
Large diffs are not rendered by default.

src/LightningDB.Tests/DatabaseIOTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void DatabaseGetShouldNotThrowExceptions()
4444
}
4545

4646
[Fact]
47-
public void DatabaseInsertedValueShouldBeRetrivedThen()
47+
public void DatabaseInsertedValueShouldBeRetrievedThen()
4848
{
4949
var key = "key";
5050
var value = "value";

src/LightningDB.Tests/DatabaseTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public void NamedDatabaseNameExistsInMaster()
8888
var db = tx.OpenDatabase();
8989
using (var cursor = tx.CreateCursor(db))
9090
{
91-
cursor.MoveNext();
92-
Assert.Equal("customdb", UTF8.GetString(cursor.Current.Key.CopyToNewArray()));
91+
cursor.Next();
92+
Assert.Equal("customdb", UTF8.GetString(cursor.GetCurrent().key.CopyToNewArray()));
9393
}
9494
}
9595
}
@@ -166,7 +166,7 @@ public void TruncatingTheDatabase()
166166
db = _txn.OpenDatabase();
167167
var result = _txn.Get(db, UTF8.GetBytes("hello"));
168168

169-
Assert.Null(result);
169+
Assert.Equal(MDBResultCode.NotFound, result.resultCode);
170170
}
171171
}
172172
}

src/LightningDB.Tests/HelperTests.cs

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/LightningDB.Tests/ProfilingTests.cs

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/LightningDB.Tests/TestHelperExtensions.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
using System.Linq;
1+
using System;
2+
using System.Linq;
23
using System.Collections.Generic;
34

45
namespace LightningDB.Tests
56
{
67
public static class TestHelperExtensions
78
{
8-
public static void Put(this LightningTransaction tx, LightningDatabase db, string key, string value)
9+
public static MDBResultCode Put(this LightningTransaction tx, LightningDatabase db, string key, string value)
910
{
1011
var enc = System.Text.Encoding.UTF8;
11-
tx.Put(db, enc.GetBytes(key), enc.GetBytes(value));
12+
return tx.Put(db, enc.GetBytes(key), enc.GetBytes(value));
1213
}
1314

1415
public static string Get(this LightningTransaction tx, LightningDatabase db, string key)
1516
{
1617
var enc = System.Text.Encoding.UTF8;
1718
var result = tx.Get(db, enc.GetBytes(key));
18-
return enc.GetString(result);
19+
return enc.GetString(result.value.CopyToNewArray());
1920
}
2021

2122
public static void Delete(this LightningTransaction tx, LightningDatabase db, string key)
@@ -46,5 +47,24 @@ public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int
4647
.GroupBy(x => x.Index / parts)
4748
.Select(x => x.Select(v => v.Value));
4849
}
50+
51+
public static void RunCursorScenario(this LightningEnvironment env,
52+
Action<LightningTransaction, LightningDatabase, LightningCursor> scenario,
53+
DatabaseOpenFlags flags = DatabaseOpenFlags.Create, TransactionBeginFlags transactionFlags = TransactionBeginFlags.None)
54+
{
55+
using var tx = env.BeginTransaction(transactionFlags);
56+
using var db = tx.OpenDatabase(configuration: new DatabaseConfiguration { Flags = flags });
57+
using var cursor = tx.CreateCursor(db);
58+
scenario(tx, db, cursor);
59+
}
60+
61+
public static void RunTransactionScenario(this LightningEnvironment env,
62+
Action<LightningTransaction, LightningDatabase> scenario,
63+
DatabaseOpenFlags flags = DatabaseOpenFlags.Create, TransactionBeginFlags transactionFlags = TransactionBeginFlags.None)
64+
{
65+
using var tx = env.BeginTransaction(transactionFlags);
66+
using var db = tx.OpenDatabase(configuration: new DatabaseConfiguration { Flags = flags });
67+
scenario(tx, db);
68+
}
4969
}
5070
}

0 commit comments

Comments
 (0)