@@ -8,44 +8,41 @@ namespace TruePath.Tests;
88
99public class LocalPathTests ( ITestOutputHelper output )
1010{
11- [ Fact ]
12- public void AnyExclusivelyRelativePath ( )
11+ [ Theory ]
12+ [ InlineData ( "foo" , "." ) ]
13+ [ InlineData ( "foo/bar" , "foo" ) ]
14+ [ InlineData ( "/" , null ) ]
15+ public void AbsolutePathParent ( string relativePath , string ? expectedRelativePath )
1316 {
14- // Arrange
15- var dots = new string ( Enumerable . Repeat ( '.' , Random . Shared . Next ( 1 , 21 ) ) . ToArray ( ) ) ;
16- var backslashes = new string ( Enumerable . Repeat ( Path . DirectorySeparatorChar , Random . Shared . Next ( 0 , 20 ) ) . ToArray ( ) ) ;
17- var result = string . Concat ( dots . AsSpan ( ) , backslashes . AsSpan ( ) ) . ToArray ( ) ;
18- Random . Shared . Shuffle ( result . ToArray ( ) ) ;
19- var path = new string ( result ) ;
20-
21- var localPath = new LocalPath ( path ) ;
22-
23- // Act
24- var parent = localPath . Parent ;
25-
26- // Assert
27- Assert . Null ( parent ) ;
17+ var root = new AbsolutePath ( OperatingSystem . IsWindows ( ) ? @"A:\" : "/" ) ;
18+ var parent = root / relativePath ;
19+ AbsolutePath ? expectedPath = expectedRelativePath == null ? null : new ( root / expectedRelativePath ) ;
20+ Assert . Equal ( expectedPath , parent . Parent ) ;
2821 }
2922
3023 [ Theory ]
31- [ InlineData ( "." ) ]
32- [ InlineData ( ".." ) ]
33- [ InlineData ( "../.." ) ]
34- [ InlineData ( "../../" ) ]
35- [ InlineData ( "../..." ) ]
36- [ InlineData ( ".../.." ) ]
37- [ InlineData ( "./." ) ]
38- [ InlineData ( "../../." ) ]
39- public void ExclusivelyRelativePath ( string path )
24+ [ InlineData ( "." , ".." ) ]
25+ [ InlineData ( ".." , "../.." ) ]
26+ [ InlineData ( "../.." , "../../.." ) ]
27+ [ InlineData ( "../../" , "../../.." ) ]
28+ [ InlineData ( "../..." , ".." ) ]
29+ [ InlineData ( ".../.." , ".." ) ]
30+ [ InlineData ( "./." , ".." ) ]
31+ [ InlineData ( "../../." , "../../.." ) ]
32+ [ InlineData ( "b" , "." ) ]
33+ [ InlineData ( "../b" , ".." ) ]
34+ [ InlineData ( "b/.." , "b/../.." ) ]
35+ public void RelativePathParent ( string path , string ? expected )
4036 {
4137 // Arrange
4238 var localPath = new LocalPath ( path ) ;
39+ LocalPath ? expectedPath = expected == null ? null : new ( expected ) ;
4340
4441 // Act
4542 var parent = localPath . Parent ;
4643
4744 // Assert
48- Assert . Null ( parent ) ;
45+ Assert . Equal ( expectedPath , parent ) ;
4946 }
5047
5148 [ Theory ]
@@ -56,8 +53,6 @@ public void ExclusivelyRelativePath(string path)
5653 public void IsPrefixOfShouldBeEquivalentToStartsWith ( string pathA , string pathB )
5754 {
5855 // Arrange
59- var y = PathStrings . Normalize ( "../.." ) ;
60-
6156 var a = new LocalPath ( pathA ) ;
6257 var b = new LocalPath ( pathB ) ;
6358
0 commit comments