Skip to content

Commit

Permalink
Update C# paths
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Asplund committed Sep 8, 2024
1 parent 497f0ad commit c084e10
Show file tree
Hide file tree
Showing 16 changed files with 602 additions and 566 deletions.
103 changes: 44 additions & 59 deletions Source/GenerateSharp/Opal.UnitTests/Utilities/PathUnitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,67 +9,43 @@ namespace Opal.UnitTests;
public class PathUnitTests
{
[Fact]
public void DefaultInitializer()
public void Initialize_Default()
{
var uut = new Path();
Assert.False(uut.HasRoot);
Assert.False(uut.HasFileName);
Assert.Equal("", uut.FileName);
Assert.False(uut.HasFileStem);
Assert.Equal("", uut.FileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("", uut.FileExtension);
Assert.Equal("./", uut.ToString());
Assert.Equal(".\\", uut.ToAlternateString());
}

[Fact]
public void Empty()
{
var uut = new Path("");
Assert.False(uut.HasRoot);
Assert.False(uut.HasFileName);
Assert.Equal("", uut.FileName);
Assert.False(uut.HasFileStem);
Assert.Equal("", uut.FileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("", uut.FileExtension);
Assert.Equal("./", uut.ToString());
Assert.Equal(".\\", uut.ToAlternateString());
}

[Fact]
public void RelativePath_Simple()
public void Initialize_RelativePath_Simple()
{
var uut = new Path("./");
Assert.False(uut.HasRoot);
Assert.False(uut.HasFileName);
Assert.Equal("", uut.FileName);
Assert.False(uut.HasFileStem);
Assert.Equal("", uut.FileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("", uut.FileExtension);
Assert.Equal("./", uut.ToString());
Assert.Equal(".\\", uut.ToAlternateString());
}

[Fact]
public void RelativePath_Parent()
public void Initialize_RelativePath_Parent()
{
var uut = new Path("../");
Assert.False(uut.HasRoot);
Assert.False(uut.HasFileName);
Assert.Equal("", uut.FileName);
Assert.False(uut.HasFileStem);
Assert.Equal("", uut.FileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("", uut.FileExtension);
Assert.Equal("../", uut.ToString());
Assert.Equal("..\\", uut.ToAlternateString());
}

[Fact]
public void RelativePath_Complex()
public void Initialize_RelativePath_Complex()
{
var uut = new Path("./myfolder/anotherFolder/file.txt");
Assert.False(uut.HasRoot);
Expand All @@ -84,23 +60,20 @@ public void RelativePath_Complex()
}

[Fact]
public void LinuxRoot()
public void Initialize_LinuxRoot()
{
var uut = new Path("/");
Assert.True(uut.HasRoot);
Assert.Equal("", uut.Root);
Assert.False(uut.HasFileName);
Assert.Equal("", uut.FileName);
Assert.False(uut.HasFileStem);
Assert.Equal("", uut.FileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("", uut.FileExtension);
Assert.Equal("/", uut.ToString());
Assert.Equal("\\", uut.ToAlternateString());
}

[Fact]
public void SimpleAbsolutePath()
public void Initialize_SimpleAbsolutePath()
{
var uut = new Path("C:/myfolder/anotherFolder/file.txt");
Assert.True(uut.HasRoot, "Verify is root.");
Expand All @@ -115,9 +88,21 @@ public void SimpleAbsolutePath()
}

[Fact]
public void AlternativeDirectoriesPath()
public void Parse_Empty()
{
var uut = Path.Parse("");
Assert.False(uut.HasRoot);
Assert.False(uut.HasFileName);
Assert.False(uut.HasFileStem);
Assert.False(uut.HasFileExtension);
Assert.Equal("./", uut.ToString());
Assert.Equal(".\\", uut.ToAlternateString());
}

[Fact]
public void Parse_AlternativeDirectoriesPath()
{
var uut = new Path("C:\\myfolder/anotherFolder\\file.txt");
var uut = Path.Parse("C:\\myfolder/anotherFolder\\file.txt");
Assert.True(uut.HasRoot, "Verify is root.");
Assert.Equal("C:", uut.Root);
Assert.True(uut.HasFileName);
Expand All @@ -130,51 +115,51 @@ public void AlternativeDirectoriesPath()
}

[Fact]
public void RemoveEmptyDirectoryInside()
public void Parse_RemoveEmptyDirectoryInside()
{
var uut = new Path("C:/myfolder//file.txt");
var uut = Path.Parse("C:/myfolder//file.txt");
Assert.Equal("C:/myfolder/file.txt", uut.ToString());
}

[Fact]
public void RemoveParentDirectoryInside()
public void ParseRemoveParentDirectoryInside()
{
var uut = new Path("C:/myfolder/../file.txt");
var uut = Path.Parse("C:/myfolder/../file.txt");
Assert.Equal("C:/file.txt", uut.ToString());
}

[Fact]
public void RemoveTwoParentDirectoryInside()
public void Parse_RemoveTwoParentDirectoryInside()
{
var uut = new Path("C:/myfolder/myfolder2/../../file.txt");
var uut = Path.Parse("C:/myfolder/myfolder2/../../file.txt");
Assert.Equal("C:/file.txt", uut.ToString());
}

[Fact]
public void LeaveParentDirectoryAtStart()
public void Parse_LeaveParentDirectoryAtStart()
{
var uut = new Path("../file.txt");
var uut = Path.Parse("../file.txt");
Assert.Equal("../file.txt", uut.ToString());
}

[Fact]
public void CurrentDirectoryAtStart()
public void Parse_CurrentDirectoryAtStart()
{
var uut = new Path("./file.txt");
var uut = Path.Parse("./file.txt");
Assert.Equal("./file.txt", uut.ToString());
}

[Fact]
public void CurrentDirectoryAtStartAlternate()
public void Parse_CurrentDirectoryAtStartAlternate()
{
var uut = new Path(".\\../file.txt");
var uut = Path.Parse(".\\../file.txt");
Assert.Equal("../file.txt", uut.ToString());
}

[Fact]
public void Concatenate_Simple()
{
var path1 = new Path("C:/MyRootFolder");
var path1 = new Path("C:/MyRootFolder/");
var path2 = new Path("./MyFolder/MyFile.txt");
var uut = path1 + path2;

Expand All @@ -184,8 +169,8 @@ public void Concatenate_Simple()
[Fact]
public void Concatenate_Empty()
{
var path1 = new Path("C:/MyRootFolder");
var path2 = new Path("");
var path1 = new Path("C:/MyRootFolder/");
var path2 = new Path();
var uut = path1 + path2;

// Changes the assumed file into a folder
Expand All @@ -195,7 +180,7 @@ public void Concatenate_Empty()
[Fact]
public void Concatenate_RootFile()
{
var path1 = new Path("C:");
var path1 = new Path("C:/");
var path2 = new Path("./MyFile.txt");
var uut = path1 + path2;

Expand All @@ -205,7 +190,7 @@ public void Concatenate_RootFile()
[Fact]
public void Concatenate_RootFolder()
{
var path1 = new Path("C:");
var path1 = new Path("C:/");
var path2 = new Path("./MyFolder/");
var uut = path1 + path2;

Expand All @@ -215,7 +200,7 @@ public void Concatenate_RootFolder()
[Fact]
public void Concatenate_UpDirectory()
{
var path1 = new Path("C:/MyRootFolder");
var path1 = new Path("C:/MyRootFolder/");
var path2 = new Path("../NewRoot/MyFile.txt");
var uut = path1 + path2;

Expand All @@ -225,7 +210,7 @@ public void Concatenate_UpDirectory()
[Fact]
public void Concatenate_UpDirectoryBeginning()
{
var path1 = new Path("../MyRootFolder");
var path1 = new Path("../MyRootFolder/");
var path2 = new Path("../NewRoot/MyFile.txt");
var uut = path1 + path2;

Expand Down Expand Up @@ -262,8 +247,8 @@ public void SetFileExtension_Add()
[Fact]
public void GetRelativeTo_Empty()
{
var uut = new Path("File.txt");
var basePath = new Path("");
var uut = new Path("./File.txt");
var basePath = new Path();

var result = uut.GetRelativeTo(basePath);

Expand All @@ -284,12 +269,12 @@ public void GetRelativeTo_SingleRelative()
[Fact]
public void GetRelativeTo_UpParentRelative()
{
var uut = new Path("../Folder/Target");
var basePath = new Path("../Folder");
var uut = new Path("../Folder/Target/");
var basePath = new Path("../Folder/");

var result = uut.GetRelativeTo(basePath);

Assert.Equal("./Target", result.ToString());
Assert.Equal("./Target/", result.ToString());
}

[Fact]
Expand Down
4 changes: 2 additions & 2 deletions Source/GenerateSharp/Opal/System/RuntimeFileSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public Path GetUserProfileDirectory()
? Environment.GetEnvironmentVariable("USERPROFILE")
: Environment.GetEnvironmentVariable("HOME")) ??
throw new InvalidOperationException("Unable to retrieve user profile");
return new Path(userProfileFolder);
return Path.Parse($"{userProfileFolder}\\");
}

public Path GetCurrentDirectory()
Expand Down Expand Up @@ -109,7 +109,7 @@ public IReadOnlyList<DirectoryEntry> GetChildDirectories(Path path)
{
result.Add(new DirectoryEntry()
{
Path = new Path(directory),
Path = new Path($"{directory}/"),
IsDirectory = true,
});
}
Expand Down
Loading

0 comments on commit c084e10

Please sign in to comment.