@@ -246,6 +246,66 @@ mod tests {
246
246
assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
247
247
}
248
248
}
249
+
250
+ #[ test]
251
+ fn test_intertwine_read_write ( ) {
252
+ let root = Builder :: new ( ) . prefix ( "test_integer_intertwine_read_write" ) . tempdir ( ) . expect ( "tempdir" ) ;
253
+ fs:: create_dir_all ( root. path ( ) ) . expect ( "dir created" ) ;
254
+
255
+ let k = Rkv :: new :: < backend:: Lmdb > ( root. path ( ) ) . expect ( "new succeeded" ) ;
256
+ let s = k. open_integer ( "s" , StoreOptions :: create ( ) ) . expect ( "open" ) ;
257
+
258
+ {
259
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
260
+ s. put ( & mut writer, 1 , & Value :: Str ( "hello!" ) ) . expect ( "write" ) ;
261
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
262
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , None ) ;
263
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , None ) ;
264
+ writer. commit ( ) . expect ( "committed" ) ;
265
+ }
266
+
267
+ let reader = k. read ( ) . expect ( "reader" ) ;
268
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
269
+
270
+ {
271
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
272
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , None ) ;
273
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , None ) ;
274
+ }
275
+
276
+ {
277
+ s. put ( & mut writer, 1 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
278
+ s. put ( & mut writer, 2 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
279
+ s. put ( & mut writer, 3 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
280
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
281
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
282
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
283
+ writer. commit ( ) . expect ( "committed" ) ;
284
+ }
285
+
286
+ {
287
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
288
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , None ) ;
289
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , None ) ;
290
+ }
291
+
292
+ {
293
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
294
+ s. put ( & mut writer, 1 , & Value :: Str ( "hello!" ) ) . expect ( "write" ) ;
295
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
296
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
297
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
298
+ writer. commit ( ) . expect ( "committed" ) ;
299
+ }
300
+
301
+ {
302
+ let reader = k. write ( ) . expect ( "reader" ) ;
303
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
304
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
305
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
306
+ reader. commit ( ) . expect ( "committed" ) ;
307
+ }
308
+ }
249
309
}
250
310
251
311
#[ cfg( test) ]
@@ -419,4 +479,64 @@ mod tests_safe {
419
479
assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
420
480
}
421
481
}
482
+
483
+ #[ test]
484
+ fn test_intertwine_read_write ( ) {
485
+ let root = Builder :: new ( ) . prefix ( "test_integer_intertwine_read_write" ) . tempdir ( ) . expect ( "tempdir" ) ;
486
+ fs:: create_dir_all ( root. path ( ) ) . expect ( "dir created" ) ;
487
+
488
+ let k = Rkv :: new :: < backend:: SafeMode > ( root. path ( ) ) . expect ( "new succeeded" ) ;
489
+ let s = k. open_integer ( "s" , StoreOptions :: create ( ) ) . expect ( "open" ) ;
490
+
491
+ {
492
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
493
+ s. put ( & mut writer, 1 , & Value :: Str ( "hello!" ) ) . expect ( "write" ) ;
494
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
495
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , None ) ;
496
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , None ) ;
497
+ writer. commit ( ) . expect ( "committed" ) ;
498
+ }
499
+
500
+ let reader = k. read ( ) . expect ( "reader" ) ;
501
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
502
+
503
+ {
504
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
505
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , None ) ;
506
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , None ) ;
507
+ }
508
+
509
+ {
510
+ s. put ( & mut writer, 1 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
511
+ s. put ( & mut writer, 2 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
512
+ s. put ( & mut writer, 3 , & Value :: Str ( "goodbye!" ) ) . expect ( "write" ) ;
513
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
514
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
515
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
516
+ writer. commit ( ) . expect ( "committed" ) ;
517
+ }
518
+
519
+ {
520
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
521
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , None ) ;
522
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , None ) ;
523
+ }
524
+
525
+ {
526
+ let mut writer = k. write ( ) . expect ( "writer" ) ;
527
+ s. put ( & mut writer, 1 , & Value :: Str ( "hello!" ) ) . expect ( "write" ) ;
528
+ assert_eq ! ( s. get( & writer, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
529
+ assert_eq ! ( s. get( & writer, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
530
+ assert_eq ! ( s. get( & writer, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
531
+ writer. commit ( ) . expect ( "committed" ) ;
532
+ }
533
+
534
+ {
535
+ let reader = k. write ( ) . expect ( "reader" ) ;
536
+ assert_eq ! ( s. get( & reader, 1 ) . expect( "read" ) , Some ( Value :: Str ( "hello!" ) ) ) ;
537
+ assert_eq ! ( s. get( & reader, 2 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
538
+ assert_eq ! ( s. get( & reader, 3 ) . expect( "read" ) , Some ( Value :: Str ( "goodbye!" ) ) ) ;
539
+ reader. commit ( ) . expect ( "committed" ) ;
540
+ }
541
+ }
422
542
}
0 commit comments