1
+ using NUnit . Framework ;
2
+
3
+ namespace ServiceStack . Text . Tests
4
+ {
5
+ public class CombinePathTests
6
+ {
7
+ [ Test ]
8
+ public void Does_combine_paths ( )
9
+ {
10
+ Assert . That ( "/a" . CombineWith ( "b" ) , Is . EqualTo ( "/a/b" ) ) ;
11
+ Assert . That ( "a" . CombineWith ( "b" ) , Is . EqualTo ( "a/b" ) ) ;
12
+ Assert . That ( "/a/b" . CombineWith ( "c" ) , Is . EqualTo ( "/a/b/c" ) ) ;
13
+ Assert . That ( "a/b" . CombineWith ( "c" ) , Is . EqualTo ( "a/b/c" ) ) ;
14
+ Assert . That ( "/a/b" . CombineWith ( "c/d" ) , Is . EqualTo ( "/a/b/c/d" ) ) ;
15
+ Assert . That ( "/a/b" . CombineWith ( "c" , "d" ) , Is . EqualTo ( "/a/b/c/d" ) ) ;
16
+
17
+ Assert . That ( "http://example.org/a/b" . CombineWith ( "c" , "d" ) , Is . EqualTo ( "http://example.org/a/b/c/d" ) ) ;
18
+ }
19
+
20
+ [ Test ]
21
+ public void Does_combine_paths_with_trailing_slashes ( )
22
+ {
23
+ Assert . That ( "/a/" . CombineWith ( "b" ) , Is . EqualTo ( "/a/b" ) ) ;
24
+ Assert . That ( "/a/" . CombineWith ( "b/" ) , Is . EqualTo ( "/a/b/" ) ) ;
25
+ Assert . That ( "a/" . CombineWith ( "/b" ) , Is . EqualTo ( "a/b" ) ) ;
26
+ Assert . That ( "/a/b/" . CombineWith ( "/c/" ) , Is . EqualTo ( "/a/b/c/" ) ) ;
27
+ Assert . That ( "a/b/" . CombineWith ( "c" ) , Is . EqualTo ( "a/b/c" ) ) ;
28
+ Assert . That ( "/a/b/" . CombineWith ( "/c/d" ) , Is . EqualTo ( "/a/b/c/d" ) ) ;
29
+ Assert . That ( "/a/b/" . CombineWith ( "/c" , "/d" ) , Is . EqualTo ( "/a/b/c/d" ) ) ;
30
+
31
+ Assert . That ( "http://example.org/a/b/" . CombineWith ( "/c/" , "/d" ) , Is . EqualTo ( "http://example.org/a/b/c/d" ) ) ;
32
+ }
33
+
34
+ [ Test ]
35
+ public void Can_resolve_paths ( )
36
+ {
37
+ Assert . That ( "/a/b/../" . ResolvePaths ( ) , Is . EqualTo ( "/a/" ) ) ;
38
+ Assert . That ( "/a/b/.." . ResolvePaths ( ) , Is . EqualTo ( "/a" ) ) ;
39
+ Assert . That ( "a/b/.." . ResolvePaths ( ) , Is . EqualTo ( "a" ) ) ;
40
+
41
+ Assert . That ( "a/../b" . ResolvePaths ( ) , Is . EqualTo ( "b" ) ) ;
42
+ Assert . That ( "a/../b/./c" . ResolvePaths ( ) , Is . EqualTo ( "b/c" ) ) ;
43
+ Assert . That ( "a/b/c/d/../.." . ResolvePaths ( ) , Is . EqualTo ( "a/b" ) ) ;
44
+ Assert . That ( "a/b/../../c/d" . ResolvePaths ( ) , Is . EqualTo ( "c/d" ) ) ;
45
+
46
+ Assert . That ( "a/.." . ResolvePaths ( ) , Is . EqualTo ( "" ) ) ;
47
+ Assert . That ( "a/../.." . ResolvePaths ( ) , Is . EqualTo ( ".." ) ) ;
48
+ Assert . That ( "a/../../" . ResolvePaths ( ) , Is . EqualTo ( "../" ) ) ;
49
+ Assert . That ( "a/../../b" . ResolvePaths ( ) , Is . EqualTo ( "../b" ) ) ;
50
+ }
51
+
52
+ }
53
+ }
0 commit comments