@@ -459,5 +459,140 @@ void main() {
459459 expect (await backend.getString ('key:with:colons' ), 'value4' );
460460 });
461461 });
462+
463+ group ('box reopening' , () {
464+ test ('getString reopens box if closed' , () async {
465+ await backend.setString ('key' , 'value' );
466+ await backend.box.close ();
467+
468+ // Should automatically reopen the box
469+ expect (await backend.getString ('key' ), 'value' );
470+ expect (backend.box.isOpen, true );
471+ });
472+
473+ test ('setString reopens box if closed' , () async {
474+ await backend.box.close ();
475+
476+ // Should automatically reopen the box
477+ await backend.setString ('newKey' , 'newValue' );
478+ expect (await backend.getString ('newKey' ), 'newValue' );
479+ expect (backend.box.isOpen, true );
480+ });
481+
482+ test ('getInt reopens box if closed' , () async {
483+ await backend.setInt ('number' , 42 );
484+ await backend.box.close ();
485+
486+ expect (await backend.getInt ('number' ), 42 );
487+ expect (backend.box.isOpen, true );
488+ });
489+
490+ test ('setInt reopens box if closed' , () async {
491+ await backend.box.close ();
492+
493+ await backend.setInt ('count' , 100 );
494+ expect (await backend.getInt ('count' ), 100 );
495+ expect (backend.box.isOpen, true );
496+ });
497+
498+ test ('getDouble reopens box if closed' , () async {
499+ await backend.setDouble ('price' , 9.99 );
500+ await backend.box.close ();
501+
502+ expect (await backend.getDouble ('price' ), 9.99 );
503+ expect (backend.box.isOpen, true );
504+ });
505+
506+ test ('setDouble reopens box if closed' , () async {
507+ await backend.box.close ();
508+
509+ await backend.setDouble ('pi' , 3.14 );
510+ expect (await backend.getDouble ('pi' ), 3.14 );
511+ expect (backend.box.isOpen, true );
512+ });
513+
514+ test ('getBool reopens box if closed' , () async {
515+ await backend.setBool ('flag' , true );
516+ await backend.box.close ();
517+
518+ expect (await backend.getBool ('flag' ), true );
519+ expect (backend.box.isOpen, true );
520+ });
521+
522+ test ('setBool reopens box if closed' , () async {
523+ await backend.box.close ();
524+
525+ await backend.setBool ('enabled' , false );
526+ expect (await backend.getBool ('enabled' ), false );
527+ expect (backend.box.isOpen, true );
528+ });
529+
530+ test ('remove reopens box if closed' , () async {
531+ await backend.setString ('toRemove' , 'value' );
532+ await backend.box.close ();
533+
534+ await backend.remove ('toRemove' );
535+ expect (await backend.containsKey ('toRemove' ), false );
536+ expect (backend.box.isOpen, true );
537+ });
538+
539+ test ('removeAll reopens box if closed' , () async {
540+ await backend.setString ('key1' , 'value1' );
541+ await backend.setString ('key2' , 'value2' );
542+ await backend.box.close ();
543+
544+ await backend.removeAll (['key1' , 'key2' ]);
545+ expect (await backend.containsKey ('key1' ), false );
546+ expect (await backend.containsKey ('key2' ), false );
547+ expect (backend.box.isOpen, true );
548+ });
549+
550+ test ('containsKey reopens box if closed' , () async {
551+ await backend.setString ('exists' , 'value' );
552+ await backend.box.close ();
553+
554+ expect (await backend.containsKey ('exists' ), true );
555+ expect (backend.box.isOpen, true );
556+ });
557+
558+ test ('getKeys reopens box if closed' , () async {
559+ await backend.setString ('key1' , 'value1' );
560+ await backend.setString ('key2' , 'value2' );
561+ await backend.box.close ();
562+
563+ final keys = await backend.getKeys ();
564+ expect (keys, containsAll (['key1' , 'key2' ]));
565+ expect (backend.box.isOpen, true );
566+ });
567+
568+ test ('getAll reopens box if closed' , () async {
569+ await backend.setString ('key1' , 'value1' );
570+ await backend.setInt ('key2' , 42 );
571+ await backend.box.close ();
572+
573+ final data = await backend.getAll ({'key1' , 'key2' });
574+ expect (data, {'key1' : 'value1' , 'key2' : 42 });
575+ expect (backend.box.isOpen, true );
576+ });
577+
578+ test ('multiple operations after box close work correctly' , () async {
579+ // Set up some initial data
580+ await backend.setString ('str' , 'text' );
581+ await backend.setInt ('num' , 10 );
582+ await backend.box.close ();
583+
584+ // Multiple operations should all work
585+ await backend.setString ('new' , 'value' );
586+ expect (await backend.getString ('str' ), 'text' );
587+ await backend.setInt ('num' , 20 );
588+ expect (await backend.getInt ('num' ), 20 );
589+ await backend.setBool ('bool' , true );
590+ expect (await backend.getBool ('bool' ), true );
591+
592+ final keys = await backend.getKeys ();
593+ expect (keys, containsAll (['str' , 'num' , 'new' , 'bool' ]));
594+ expect (backend.box.isOpen, true );
595+ });
596+ });
462597 });
463598}
0 commit comments