@@ -552,15 +552,15 @@ private static string GetProjectProjectReference(IReadOnlyCollection<string> rel
552552 return Utils . HomogenizeEol ( referenceString ) ;
553553 }
554554
555- private static Solution CreateTestSolution ( )
555+ private static Solution CreateTestSolution ( string filePath = SlnFilePath )
556556 {
557557 var ws = Task . Run ( ( ) => ThreadSafeWorkspaceHelper . CreateAdhocWorkspace . GetValueAsync ( ) )
558558#pragma warning disable VSTHRD002 // Avoid problematic synchronous waits - the tests don't deadlock
559559 . GetAwaiter ( ) . GetResult ( ) ;
560560#pragma warning restore VSTHRD002 // Avoid problematic synchronous waits
561561 var solutionId = SolutionId . CreateNewId ( SlnName ) ;
562562 var versionStamp = VersionStamp . Create ( ) ;
563- var solutionInfo = SolutionInfo . Create ( solutionId , versionStamp , SlnFilePath ) ;
563+ var solutionInfo = SolutionInfo . Create ( solutionId , versionStamp , filePath ) ;
564564
565565 return ws . AddSolution ( solutionInfo ) ;
566566 }
@@ -589,4 +589,54 @@ private static async Task<string> GetConvertedCodeAsync(SolutionConverter slnCon
589589
590590 return conversionResult . ConvertedCode ;
591591 }
592+
593+ [ Fact ]
594+ public void ConvertSlnxSolutionFile_WhenInSolutionBaseDirThenUpdated ( )
595+ {
596+ //Arrange
597+ var slnxContents = "<Solution>\r \n <Project Path=\" VbLibrary.vbproj\" />\r \n </Solution>" ;
598+ var slnxSln = CreateTestSolution ( @"C:\MySolution\MySolution.slnx" ) ;
599+ var projectId = ProjectId . CreateNewId ( ) ;
600+ var projInfo = ProjectInfo . Create ( projectId , VersionStamp . Create ( ) , "VbLibrary" , "VbLibrary" ,
601+ LanguageNames . VisualBasic , @"C:\MySolution\VbLibrary.vbproj" ) ;
602+ slnxSln = slnxSln . AddProject ( projInfo ) ;
603+ var testProject = slnxSln . GetProject ( projectId ) ;
604+
605+ _fsMock . Setup ( mock => mock . File . ReadAllText ( It . IsAny < string > ( ) ) ) . Returns ( "" ) ;
606+
607+ var slnConverter = SolutionConverter . CreateFor < VBToCSConversion > ( new List < Project > { testProject } ,
608+ fileSystem : _fsMock . Object , solutionContents : slnxContents ) ;
609+
610+ //Act
611+ var convertedSlnFile = slnConverter . ConvertSolutionFile ( ) . ConvertedCode ;
612+
613+ //Assert
614+ var expectedSlnFile = "<Solution>\r \n <Project Path=\" VbLibrary.csproj\" />\r \n </Solution>" ;
615+ Assert . Equal ( expectedSlnFile , Utils . HomogenizeEol ( convertedSlnFile ) ) ;
616+ }
617+
618+ [ Fact ]
619+ public void ConvertSlnxSolutionFile_WhenInProjectFolderThenUpdated ( )
620+ {
621+ //Arrange
622+ var slnxContents = "<Solution>\r \n <Project Path=\" VbLibrary\\ VbLibrary.vbproj\" />\r \n </Solution>" ;
623+ var slnxSln = CreateTestSolution ( @"C:\MySolution\MySolution.slnx" ) ;
624+ var projectId = ProjectId . CreateNewId ( ) ;
625+ var projInfo = ProjectInfo . Create ( projectId , VersionStamp . Create ( ) , "VbLibrary" , "VbLibrary" ,
626+ LanguageNames . VisualBasic , @"C:\MySolution\VbLibrary\VbLibrary.vbproj" ) ;
627+ slnxSln = slnxSln . AddProject ( projInfo ) ;
628+ var testProject = slnxSln . GetProject ( projectId ) ;
629+
630+ _fsMock . Setup ( mock => mock . File . ReadAllText ( It . IsAny < string > ( ) ) ) . Returns ( "" ) ;
631+
632+ var slnConverter = SolutionConverter . CreateFor < VBToCSConversion > ( new List < Project > { testProject } ,
633+ fileSystem : _fsMock . Object , solutionContents : slnxContents ) ;
634+
635+ //Act
636+ var convertedSlnFile = slnConverter . ConvertSolutionFile ( ) . ConvertedCode ;
637+
638+ //Assert
639+ var expectedSlnFile = "<Solution>\r \n <Project Path=\" VbLibrary\\ VbLibrary.csproj\" />\r \n </Solution>" ;
640+ Assert . Equal ( expectedSlnFile , Utils . HomogenizeEol ( convertedSlnFile ) ) ;
641+ }
592642}
0 commit comments