@@ -512,13 +512,113 @@ public void ActivatesOpenModulesWithSavedOpenStateOnRecoverOpenState()
512
512
selectionServiceMock . Verify ( m => m . TryActivate ( _testModuleSelections [ 3 ] . QualifiedName ) , Times . Never ) ;
513
513
}
514
514
515
+ [ Test ]
516
+ [ Category ( "Rewriting" ) ]
517
+ public void ActivatesOpenModulesWithSavedOpenStateOnNextParseAfterRecoverOpenStateOnNextParse ( )
518
+ {
519
+ var selectionServiceMock = TestSelectionServiceMock ( ) ;
520
+ var openModules = _testModuleSelections . Take ( 3 )
521
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName )
522
+ . ToHashSet ( ) ;
523
+ selectionServiceMock . Setup ( m => m . OpenModules ( ) ) . Returns ( openModules ) ;
524
+
525
+ var parseManagerMock = new Mock < IParseManager > ( ) ;
526
+ var selectionRecoverer = new SelectionRecoverer ( selectionServiceMock . Object , parseManagerMock . Object ) ;
527
+
528
+ var modulesForWhichToSaveOpenState = _testModuleSelections . Skip ( 1 )
529
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName )
530
+ . ToHashSet ( ) ;
531
+
532
+ selectionRecoverer . SaveOpenState ( modulesForWhichToSaveOpenState ) ;
533
+ selectionRecoverer . RecoverOpenStateOnNextParse ( ) ;
534
+
535
+ var stateEventArgs = new ParserStateEventArgs ( _stateExpectedToTriggerTheRecovery , ParserState . Pending ,
536
+ CancellationToken . None ) ;
537
+ parseManagerMock . Raise ( m => m . StateChanged += null , stateEventArgs ) ;
538
+
539
+ selectionServiceMock . Verify ( m => m . TryActivate ( _testModuleSelections [ 1 ] . QualifiedName ) , Times . Once ) ;
540
+ selectionServiceMock . Verify ( m => m . TryActivate ( _testModuleSelections [ 2 ] . QualifiedName ) , Times . Once ) ;
541
+ selectionServiceMock . Verify ( m => m . TryActivate ( _testModuleSelections [ 0 ] . QualifiedName ) , Times . Never ) ;
542
+ selectionServiceMock . Verify ( m => m . TryActivate ( _testModuleSelections [ 3 ] . QualifiedName ) , Times . Never ) ;
543
+ }
544
+
545
+ [ Test ]
546
+ [ Category ( "Rewriting" ) ]
547
+ public void OnNextParseAfterSetupOpenModulesWithSavedOpenStateBeforeSettingSelection ( )
548
+ {
549
+ var lastCalledMethod = string . Empty ;
550
+ var selectionServiceMock = TestSelectionServiceMock ( ) ;
551
+ selectionServiceMock . Setup ( m => m . TryActivate ( It . IsAny < QualifiedModuleName > ( ) ) )
552
+ . Callback ( ( QualifiedModuleName module ) => lastCalledMethod = "TryActivate" ) ;
553
+ selectionServiceMock . Setup ( m => m . TrySetSelection ( It . IsAny < QualifiedModuleName > ( ) , It . IsAny < Selection > ( ) ) )
554
+ . Callback ( ( QualifiedModuleName module , Selection selection ) => lastCalledMethod = "TrySetSelection" ) ;
555
+
556
+ var openModules = _testModuleSelections . Take ( 3 )
557
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName )
558
+ . ToHashSet ( ) ;
559
+
560
+ selectionServiceMock . Setup ( m => m . OpenModules ( ) ) . Returns ( openModules ) ;
561
+
562
+ var parseManagerMock = new Mock < IParseManager > ( ) ;
563
+ var selectionRecoverer = new SelectionRecoverer ( selectionServiceMock . Object , parseManagerMock . Object ) ;
564
+
565
+ var modulesForWhichToSaveOpenState = _testModuleSelections . Skip ( 1 )
566
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName )
567
+ . ToHashSet ( ) ;
568
+ var selectionRecoveryModules = _testModuleSelections
569
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName ) . Take ( 2 ) ;
570
+
571
+ selectionRecoverer . SaveSelections ( selectionRecoveryModules ) ;
572
+ selectionRecoverer . RecoverSavedSelectionsOnNextParse ( ) ;
573
+ selectionRecoverer . SaveOpenState ( modulesForWhichToSaveOpenState ) ;
574
+ selectionRecoverer . RecoverOpenStateOnNextParse ( ) ;
575
+
576
+ var stateEventArgs = new ParserStateEventArgs ( _stateExpectedToTriggerTheRecovery , ParserState . Pending ,
577
+ CancellationToken . None ) ;
578
+ parseManagerMock . Raise ( m => m . StateChanged += null , stateEventArgs ) ;
579
+
580
+ Assert . AreEqual ( "TrySetSelection" , lastCalledMethod ) ;
581
+ }
582
+
583
+ [ Test ]
584
+ [ Category ( "Rewriting" ) ]
585
+ public void OnNextParseAfterSetupSetsSelectionsBeforeReactivatingTheActiveCodePane ( )
586
+ {
587
+ var lastCalledMethod = string . Empty ;
588
+ var selectionServiceMock = TestSelectionServiceMock ( ) ;
589
+ selectionServiceMock . Setup ( m => m . TryActivate ( It . IsAny < QualifiedModuleName > ( ) ) )
590
+ . Callback ( ( QualifiedModuleName module ) => lastCalledMethod = "TryActivate" ) ;
591
+ selectionServiceMock . Setup ( m => m . TrySetSelection ( It . IsAny < QualifiedModuleName > ( ) , It . IsAny < Selection > ( ) ) )
592
+ . Callback ( ( QualifiedModuleName module , Selection selection ) => lastCalledMethod = "TrySetSelection" ) ;
593
+
594
+ selectionServiceMock . Setup ( m => m . ActiveSelection ( ) ) . Returns ( ( ) => _testModuleSelections [ 1 ] ) ;
595
+
596
+ var parseManagerMock = new Mock < IParseManager > ( ) ;
597
+ var selectionRecoverer = new SelectionRecoverer ( selectionServiceMock . Object , parseManagerMock . Object ) ;
598
+
599
+ var selectionRecoveryModules = _testModuleSelections
600
+ . Select ( qualifiedSelection => qualifiedSelection . QualifiedName ) . Take ( 2 ) ;
601
+
602
+ selectionRecoverer . SaveSelections ( selectionRecoveryModules ) ;
603
+ selectionRecoverer . RecoverSavedSelectionsOnNextParse ( ) ;
604
+ selectionRecoverer . SaveActiveCodePane ( ) ;
605
+ selectionRecoverer . RecoverActiveCodePaneOnNextParse ( ) ;
606
+
607
+ var stateEventArgs = new ParserStateEventArgs ( _stateExpectedToTriggerTheRecovery , ParserState . Pending ,
608
+ CancellationToken . None ) ;
609
+ parseManagerMock . Raise ( m => m . StateChanged += null , stateEventArgs ) ;
610
+
611
+ Assert . AreEqual ( "TryActivate" , lastCalledMethod ) ;
612
+ }
613
+
515
614
private Mock < ISelectionService > TestSelectionServiceMock ( )
516
615
{
517
616
var mock = new Mock < ISelectionService > ( ) ;
518
617
foreach ( var qualifiedSelection in _testModuleSelections )
519
618
{
520
619
mock . Setup ( m => m . Selection ( qualifiedSelection . QualifiedName ) ) . Returns ( qualifiedSelection . Selection ) ;
521
620
}
621
+ mock . Setup ( m => m . OpenModules ( ) ) . Returns ( ( ) => _testModuleSelections . Select ( qualifiedSelection => qualifiedSelection . QualifiedName ) . ToList ( ) ) ;
522
622
523
623
mock . Setup ( m => m . TrySetSelection ( It . IsAny < QualifiedModuleName > ( ) , It . IsAny < Selection > ( ) ) ) ;
524
624
mock . Setup ( m => m . TryActivate ( It . IsAny < QualifiedModuleName > ( ) ) ) ;
0 commit comments