@@ -86,6 +86,41 @@ public void ChildTransactionShouldBeAbortedIfParentIsAborted()
8686 result . ShouldBe ( MDBResultCode . BadTxn ) ;
8787 } ) ;
8888 }
89+
90+ public void TryGetShouldVerifyFindingAndNotFindingValues ( )
91+ {
92+ using var env = CreateEnvironment ( ) ;
93+ env . Open ( ) ;
94+ env . RunTransactionScenario ( ( tx , db ) =>
95+ {
96+ var key = MemoryMarshal . Cast < char , byte > ( "key1" ) ;
97+ var value = MemoryMarshal . Cast < char , byte > ( "value1" ) ;
98+
99+ tx . Put ( db , key , value ) ;
100+
101+ tx . TryGet ( db , key . ToArray ( ) , out var retrievedValue ) . ShouldBeTrue ( ) ;
102+ retrievedValue . ShouldBe ( value . ToArray ( ) ) ;
103+
104+ var missingKey = MemoryMarshal . Cast < char , byte > ( "key2" ) ;
105+ tx . TryGet ( db , missingKey . ToArray ( ) , out _ ) . ShouldBeFalse ( ) ;
106+ } ) ;
107+ }
108+
109+ public void TryGetWithKeyAndValueShouldBeFound ( )
110+ {
111+ using var env = CreateEnvironment ( ) ;
112+ env . Open ( ) ;
113+ env . RunTransactionScenario ( ( tx , db ) =>
114+ {
115+ var key = MemoryMarshal . Cast < char , byte > ( "key3" ) ;
116+ var value = MemoryMarshal . Cast < char , byte > ( "value3" ) ;
117+ tx . Put ( db , key , value ) ;
118+
119+ var resultBuffer = new byte [ value . Length ] ;
120+ tx . TryGet ( db , key . ToArray ( ) , resultBuffer ) . ShouldBeTrue ( ) ;
121+ resultBuffer . ShouldBe ( value . ToArray ( ) ) ;
122+ } ) ;
123+ }
89124
90125 public void ChildTransactionShouldBeAbortedIfParentIsCommitted ( )
91126 {
@@ -228,4 +263,27 @@ public void TransactionShouldSupportCustomDupSorter()
228263 BitConverter . ToInt32 ( result . Item3 . CopyToNewArray ( ) ) . ShouldBe ( valuesSorted [ order ++ ] ) ;
229264 }
230265 }
266+ public void DatabaseShouldBeEmptyAfterTruncate ( )
267+ {
268+ using var env = CreateEnvironment ( ) ;
269+ env . Open ( ) ;
270+ env . RunTransactionScenario ( ( tx , db ) =>
271+ {
272+ // Insert several key-value pairs
273+ var key1 = MemoryMarshal . Cast < char , byte > ( "key1" ) ;
274+ var key2 = MemoryMarshal . Cast < char , byte > ( "key2" ) ;
275+ var value1 = MemoryMarshal . Cast < char , byte > ( "value1" ) ;
276+ var value2 = MemoryMarshal . Cast < char , byte > ( "value2" ) ;
277+
278+ tx . Put ( db , key1 , value1 ) ;
279+ tx . Put ( db , key2 , value2 ) ;
280+
281+ // Truncate the database
282+ tx . TruncateDatabase ( db ) ;
283+
284+ // Verify the database is empty
285+ tx . ContainsKey ( db , key1 ) . ShouldBeFalse ( ) ;
286+ tx . ContainsKey ( db , key2 ) . ShouldBeFalse ( ) ;
287+ } ) ;
288+ }
231289}
0 commit comments