Skip to content

Commit e13f7bb

Browse files
committed
Add missing native functions to Lmdb imports and add much more test coverage
1 parent 21c452e commit e13f7bb

File tree

10 files changed

+1980
-115
lines changed

10 files changed

+1980
-115
lines changed

src/LightningDB.Tests/CursorTests.cs

Lines changed: 310 additions & 28 deletions
Large diffs are not rendered by default.

src/LightningDB.Tests/DatabaseIOTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace LightningDB.Tests;
44

55
public class DatabaseIOTests : TestBase
66
{
7-
public void DatabasePutShouldNotThrowExceptions()
7+
public void database_put_should_not_throw_exceptions()
88
{
99
using var env = CreateEnvironment();
1010
env.Open();
@@ -17,7 +17,7 @@ public void DatabasePutShouldNotThrowExceptions()
1717
});
1818
}
1919

20-
public void DatabaseGetShouldNotThrowExceptions()
20+
public void database_get_should_not_throw_exceptions()
2121
{
2222
using var env = CreateEnvironment();
2323
env.Open();
@@ -27,7 +27,7 @@ public void DatabaseGetShouldNotThrowExceptions()
2727
});
2828
}
2929

30-
public void DatabaseInsertedValueShouldBeRetrievedThen()
30+
public void database_inserted_value_should_be_retrieved_then()
3131
{
3232
using var env = CreateEnvironment();
3333
env.Open();
@@ -43,7 +43,7 @@ public void DatabaseInsertedValueShouldBeRetrievedThen()
4343
});
4444
}
4545

46-
public void DatabaseDeleteShouldRemoveItem()
46+
public void database_delete_should_remove_item()
4747
{
4848
using var env = CreateEnvironment();
4949
env.Open();
@@ -59,7 +59,7 @@ public void DatabaseDeleteShouldRemoveItem()
5959
});
6060
}
6161

62-
public void DatabaseDeleteShouldRemoveAllDuplicateDataItems()
62+
public void database_delete_should_remove_all_duplicate_data_items()
6363
{
6464
using var env = CreateEnvironment(TempPath(), new EnvironmentConfiguration { MapSize = 1024 * 1024 });
6565
env.Open();
@@ -77,7 +77,7 @@ public void DatabaseDeleteShouldRemoveAllDuplicateDataItems()
7777
}, DatabaseOpenFlags.DuplicatesSort);
7878
}
7979

80-
public void ContainsKeyShouldReturnTrueIfKeyExists()
80+
public void contains_key_should_return_true_if_key_exists()
8181
{
8282
using var env = CreateEnvironment();
8383
env.Open();
@@ -94,7 +94,7 @@ public void ContainsKeyShouldReturnTrueIfKeyExists()
9494
});
9595
}
9696

97-
public void ContainsKeyShouldReturnFalseIfKeyNotExists()
97+
public void contains_key_should_return_false_if_key_not_exists()
9898
{
9999
using var env = CreateEnvironment();
100100
env.Open();
@@ -107,7 +107,7 @@ public void ContainsKeyShouldReturnFalseIfKeyNotExists()
107107
});
108108
}
109109

110-
public void TryGetShouldReturnValueIfKeyExists()
110+
public void try_get_should_return_value_if_key_exists()
111111
{
112112
using var env = CreateEnvironment();
113113
env.Open();
@@ -125,7 +125,7 @@ public void TryGetShouldReturnValueIfKeyExists()
125125
});
126126
}
127127

128-
public void CanCommitTransactionToNamedDatabase()
128+
public void can_commit_transaction_to_named_database()
129129
{
130130
using var env = CreateEnvironment(TempPath(), new EnvironmentConfiguration{MaxDatabases = 2});
131131
env.Open();

src/LightningDB.Tests/DatabaseTests.cs

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace LightningDB.Tests;
66
public class DatabaseTests : TestBase
77
{
88

9-
public void DatabaseShouldBeCreated()
9+
public void database_should_be_created()
1010
{
1111
using var env = CreateEnvironment();
1212
const string dbName = "test";
@@ -25,7 +25,7 @@ public void DatabaseShouldBeCreated()
2525
}
2626
}
2727

28-
public void DatabaseShouldBeClosed()
28+
public void database_should_be_closed()
2929
{
3030
using var env = CreateEnvironment();
3131
env.Open();
@@ -37,7 +37,7 @@ public void DatabaseShouldBeClosed()
3737
db.IsOpened.ShouldBeFalse();
3838
}
3939

40-
public void DatabaseFromCommittedTransactionShouldBeAccessible()
40+
public void database_from_committed_transaction_should_be_accessible()
4141
{
4242
using var env = CreateEnvironment();
4343
env.Open();
@@ -57,7 +57,7 @@ public void DatabaseFromCommittedTransactionShouldBeAccessible()
5757
}
5858
}
5959

60-
public void NamedDatabaseNameExistsInMaster()
60+
public void named_database_name_exists_in_master()
6161
{
6262
using var env = CreateEnvironment();
6363
env.MaxDatabases = 2;
@@ -80,7 +80,7 @@ public void NamedDatabaseNameExistsInMaster()
8080
}
8181
}
8282

83-
public void ReadonlyTransactionOpenedDatabasesDontGetReused()
83+
public void readonly_transaction_opened_databases_dont_get_reused()
8484
{
8585
//This is here to assert that previous issues with the way manager
8686
//classes (since removed) worked don't happen anymore.
@@ -108,7 +108,7 @@ public void ReadonlyTransactionOpenedDatabasesDontGetReused()
108108
}
109109
}
110110

111-
public void DatabaseShouldBeDropped()
111+
public void database_should_be_dropped()
112112
{
113113
using var env = CreateEnvironment();
114114
env.MaxDatabases = 2;
@@ -133,7 +133,7 @@ public void DatabaseShouldBeDropped()
133133
}
134134
}
135135

136-
public void TruncatingTheDatabase()
136+
public void truncating_the_database()
137137
{
138138
using var env = CreateEnvironment();
139139
env.Open();
@@ -160,7 +160,7 @@ public void TruncatingTheDatabase()
160160
}
161161
}
162162

163-
public void DatabaseCanGetStats()
163+
public void database_can_get_stats()
164164
{
165165
using var env = CreateEnvironment();
166166
env.Open();
@@ -176,4 +176,51 @@ public void DatabaseCanGetStats()
176176
stats.PageSize.ShouldBe(env.EnvironmentStats.PageSize);
177177
stats.BTreeDepth.ShouldBe(1);
178178
}
179+
180+
public void can_get_database_flags()
181+
{
182+
using var env = CreateEnvironment();
183+
env.MaxDatabases = 10; // Allow more named databases
184+
env.Open();
185+
186+
// Test with the transaction-based GetFlags method using a named database with IntegerKey flag
187+
using (var txn = env.BeginTransaction())
188+
{
189+
using var db = txn.OpenDatabase("intkey", new DatabaseConfiguration
190+
{
191+
Flags = DatabaseOpenFlags.Create | DatabaseOpenFlags.IntegerKey
192+
});
193+
194+
// Test using explicit transaction
195+
var flags = db.GetFlags(txn);
196+
flags.ShouldNotBe(DatabaseOpenFlags.None);
197+
198+
// The flags should include DatabaseOpenFlags.IntegerKey
199+
flags.HasFlag(DatabaseOpenFlags.IntegerKey).ShouldBeTrue();
200+
txn.Commit();
201+
}
202+
203+
// Test default database (should have no special flags)
204+
using (var txn = env.BeginTransaction())
205+
{
206+
using var db = txn.OpenDatabase(null, new DatabaseConfiguration { Flags = DatabaseOpenFlags.Create });
207+
208+
var flags = db.GetFlags(txn);
209+
flags.ShouldBe(DatabaseOpenFlags.None);
210+
txn.Commit();
211+
}
212+
213+
// Test DuplicatesSort flag
214+
using (var txn = env.BeginTransaction())
215+
{
216+
using var db = txn.OpenDatabase("dupsort", new DatabaseConfiguration
217+
{
218+
Flags = DatabaseOpenFlags.Create | DatabaseOpenFlags.DuplicatesSort
219+
});
220+
221+
var flags = db.GetFlags(txn);
222+
flags.HasFlag(DatabaseOpenFlags.DuplicatesSort).ShouldBeTrue();
223+
txn.Commit();
224+
}
225+
}
179226
}

0 commit comments

Comments
 (0)