@@ -33,15 +33,13 @@ private static byte[][] PopulateMultipleCursorValues(LightningCursor cursor, str
3333 return values ;
3434 }
3535
36- [ Test ]
3736 public void CursorShouldBeCreated ( )
3837 {
3938 using var env = CreateEnvironment ( ) ;
4039 env . Open ( ) ;
4140 env . RunCursorScenario ( ( _ , _ , c ) => c . ShouldNotBeNull ( ) ) ;
4241 }
4342
44- [ Test ]
4543 public void CursorShouldPutValues ( )
4644 {
4745 using var env = CreateEnvironment ( ) ;
@@ -54,7 +52,6 @@ public void CursorShouldPutValues()
5452 } ) ;
5553 }
5654
57- [ Test ]
5855 public void CursorShouldSetSpanKey ( )
5956 {
6057 using var env = CreateEnvironment ( ) ;
@@ -70,7 +67,6 @@ public void CursorShouldSetSpanKey()
7067 } ) ;
7168 }
7269
73- [ Test ]
7470 public void CursorShouldMoveToLast ( )
7571 {
7672 using var env = CreateEnvironment ( ) ;
@@ -85,7 +81,6 @@ public void CursorShouldMoveToLast()
8581 } ) ;
8682 }
8783
88- [ Test ]
8984 public void CursorShouldMoveToFirst ( )
9085 {
9186 using var env = CreateEnvironment ( ) ;
@@ -100,7 +95,6 @@ public void CursorShouldMoveToFirst()
10095 } ) ;
10196 }
10297
103- [ Test ]
10498 public void ShouldIterateThroughCursor ( )
10599 {
106100 using var env = CreateEnvironment ( ) ;
@@ -119,7 +113,6 @@ public void ShouldIterateThroughCursor()
119113 } ) ;
120114 }
121115
122- [ Test ]
123116 public void CursorShouldDeleteElements ( )
124117 {
125118 using var env = CreateEnvironment ( ) ;
@@ -138,7 +131,6 @@ public void CursorShouldDeleteElements()
138131 } ) ;
139132 }
140133
141- [ Test ]
142134 public void ShouldPutMultiple ( )
143135 {
144136 using var env = CreateEnvironment ( ) ;
@@ -147,7 +139,6 @@ public void ShouldPutMultiple()
147139 DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
148140 }
149141
150- [ Test ]
151142 public void ShouldGetMultiple ( )
152143 {
153144 using var env = CreateEnvironment ( ) ;
@@ -164,7 +155,6 @@ public void ShouldGetMultiple()
164155 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
165156 }
166157
167- [ Test ]
168158 public void ShouldGetNextMultiple ( )
169159 {
170160 using var env = CreateEnvironment ( ) ;
@@ -180,7 +170,6 @@ public void ShouldGetNextMultiple()
180170 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
181171 }
182172
183- [ Test ]
184173 public void ShouldAdvanceKeyToClosestWhenKeyNotFound ( )
185174 {
186175 using var env = CreateEnvironment ( ) ;
@@ -195,7 +184,6 @@ public void ShouldAdvanceKeyToClosestWhenKeyNotFound()
195184 } ) ;
196185 }
197186
198- [ Test ]
199187 public void ShouldSetKeyAndGet ( )
200188 {
201189 using var env = CreateEnvironment ( ) ;
@@ -209,7 +197,6 @@ public void ShouldSetKeyAndGet()
209197 } ) ;
210198 }
211199
212- [ Test ]
213200 public void ShouldSetKeyAndGetWithSpan ( )
214201 {
215202 using var env = CreateEnvironment ( ) ;
@@ -223,7 +210,6 @@ public void ShouldSetKeyAndGetWithSpan()
223210 } ) ;
224211 }
225212
226- [ Test ]
227213 public void ShouldGetBoth ( )
228214 {
229215 using var env = CreateEnvironment ( ) ;
@@ -236,7 +222,6 @@ public void ShouldGetBoth()
236222 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
237223 }
238224
239- [ Test ]
240225 public void ShouldGetBothWithSpan ( )
241226 {
242227 using var env = CreateEnvironment ( ) ;
@@ -250,7 +235,6 @@ public void ShouldGetBothWithSpan()
250235 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
251236 }
252237
253- [ Test ]
254238 public void ShouldMoveToPrevious ( )
255239 {
256240 using var env = CreateEnvironment ( ) ;
@@ -265,7 +249,6 @@ public void ShouldMoveToPrevious()
265249 } ) ;
266250 }
267251
268- [ Test ]
269252 public void ShouldSetRangeWithSpan ( )
270253 {
271254 using var env = CreateEnvironment ( ) ;
@@ -281,7 +264,6 @@ public void ShouldSetRangeWithSpan()
281264 } ) ;
282265 }
283266
284- [ Test ]
285267 public void ShouldGetBothRange ( )
286268 {
287269 using var env = CreateEnvironment ( ) ;
@@ -297,7 +279,6 @@ public void ShouldGetBothRange()
297279 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
298280 }
299281
300- [ Test ]
301282 public void ShouldGetBothRangeWithSpan ( )
302283 {
303284 using var env = CreateEnvironment ( ) ;
@@ -313,7 +294,6 @@ public void ShouldGetBothRangeWithSpan()
313294 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
314295 }
315296
316- [ Test ]
317297 public void ShouldMoveToFirstDuplicate ( )
318298 {
319299 using var env = CreateEnvironment ( ) ;
@@ -330,7 +310,6 @@ public void ShouldMoveToFirstDuplicate()
330310 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
331311 }
332312
333- [ Test ]
334313 public void ShouldMoveToLastDuplicate ( )
335314 {
336315 using var env = CreateEnvironment ( ) ;
@@ -346,7 +325,36 @@ public void ShouldMoveToLastDuplicate()
346325 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
347326 }
348327
349- [ Test ]
328+ public void AllValuesForShouldOnlyReturnMatchingKeyValues ( )
329+ {
330+ using var env = CreateEnvironment ( ) ;
331+ env . Open ( ) ;
332+ env . RunCursorScenario ( ( _ , _ , c ) =>
333+ {
334+ var key1 = "TestKey1"u8 . ToArray ( ) ;
335+ var key2 = "TestKey2"u8 . ToArray ( ) ;
336+
337+ var key1Values = Enumerable . Range ( 1 , 5 ) . Select ( i => UTF8 . GetBytes ( $ "key1_value{ i } ") ) . ToArray ( ) ;
338+ var key2Values = Enumerable . Range ( 1 , 3 ) . Select ( i => UTF8 . GetBytes ( $ "key2_value{ i } ") ) . ToArray ( ) ;
339+
340+ foreach ( var value in key1Values )
341+ {
342+ c . Put ( key1 , value , CursorPutOptions . None ) ;
343+ }
344+
345+ foreach ( var value in key2Values )
346+ {
347+ c . Put ( key2 , value , CursorPutOptions . None ) ;
348+ }
349+
350+ var allKey1Values = c . AllValuesFor ( key1 ) . Select ( v => v . CopyToNewArray ( ) ) . ToArray ( ) ;
351+ var allKey2Values = c . AllValuesFor ( key2 ) . Select ( v => v . CopyToNewArray ( ) ) . ToArray ( ) ;
352+
353+ allKey1Values . ShouldBe ( key1Values ) ;
354+ allKey2Values . ShouldBe ( key2Values ) ;
355+ } , DatabaseOpenFlags . DuplicatesSort | DatabaseOpenFlags . Create ) ;
356+ }
357+
350358 public void ShouldMoveToNextNoDuplicate ( )
351359 {
352360 using var env = CreateEnvironment ( ) ;
@@ -360,7 +368,30 @@ public void ShouldMoveToNextNoDuplicate()
360368 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
361369 }
362370
363- [ Test ]
371+
372+ public void ShouldRetrieveAllValuesForKey ( )
373+ {
374+ using var env = CreateEnvironment ( ) ;
375+ env . Open ( ) ;
376+ env . RunCursorScenario ( ( _ , _ , c ) =>
377+ {
378+ var key = "TestKey"u8 . ToArray ( ) ;
379+ var values = Enumerable . Range ( 1 , 5 ) . Select ( i => UTF8 . GetBytes ( $ "value{ i } ") ) . ToArray ( ) ;
380+
381+ // Insert multiple values for the same key with DuplicateSort option
382+ foreach ( var value in values )
383+ {
384+ c . Put ( key , value , CursorPutOptions . None ) ;
385+ }
386+
387+ // Fetch all values using the AllValuesFor method
388+ var retrievedValues = c . AllValuesFor ( key ) . Select ( v => v . CopyToNewArray ( ) ) . ToArray ( ) ;
389+
390+ // Verify all inserted values are retrieved
391+ retrievedValues . ShouldBe ( values ) ;
392+ } , DatabaseOpenFlags . DuplicatesSort | DatabaseOpenFlags . Create ) ;
393+ }
394+
364395 public void ShouldRenewSameTransaction ( )
365396 {
366397 using var env = CreateEnvironment ( ) ;
@@ -372,7 +403,6 @@ public void ShouldRenewSameTransaction()
372403 } , transactionFlags : TransactionBeginFlags . ReadOnly ) ;
373404 }
374405
375- [ Test ]
376406 public void ShouldDeleteDuplicates ( )
377407 {
378408 using var env = CreateEnvironment ( ) ;
@@ -388,7 +418,6 @@ public void ShouldDeleteDuplicates()
388418 } , DatabaseOpenFlags . DuplicatesFixed | DatabaseOpenFlags . Create ) ;
389419 }
390420
391- [ Test ]
392421 public void CanPutBatchesViaCursorIssue155 ( )
393422 {
394423 static LightningDatabase OpenDatabase ( LightningEnvironment environment )
@@ -427,7 +456,6 @@ void ReproduceCoreIteration(LightningEnvironment environment, LightningDatabase
427456 true . ShouldBeTrue ( "Code would be unreachable otherwise." ) ;
428457 }
429458
430- [ Test ]
431459 public void CountCursor ( )
432460 {
433461 using var env = CreateEnvironment ( ) ;
0 commit comments