Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / mono-path.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Diagnostics;
5 using System.Runtime.InteropServices;
6
7 public class Program
8 {
9         static bool failure;
10
11         [DllImport ("__Internal")]
12         static extern string mono_path_canonicalize (string input);
13
14         static void CanonicalizeAssert (string input, string expected)
15         {
16                 string actual = mono_path_canonicalize (input);
17                 if (expected != actual) {
18                         failure = true;
19                         Console.WriteLine ("ERROR: Expected canonicalization of '{0}' to be '{1}', but it was '{2}'.", input, expected, actual);
20                 } else {
21                         Console.WriteLine ("SUCCESS: Canonicalization of '{0}' => '{1}'", input, actual);
22                 }
23         }
24         
25         static void CanonicalizeTest ()
26         {
27                 bool isWindows = !(((int)Environment.OSVersion.Platform == 4) || ((int)Environment.OSVersion.Platform == 128));
28
29                 if (!isWindows) {
30                         CanonicalizeAssert ("", Environment.CurrentDirectory);
31                         CanonicalizeAssert ("/", "/");
32                         CanonicalizeAssert ("/..", "/");
33                         CanonicalizeAssert ("/foo", "/foo");
34                         CanonicalizeAssert ("/foo/././", "/foo");
35                         CanonicalizeAssert ("/../../foo", "/foo");
36                         CanonicalizeAssert ("/foo/", "/foo");
37                         CanonicalizeAssert ("/foo/../../../", "/");
38                         CanonicalizeAssert ("/foo/../../..", "/");
39                 }
40         }
41         
42         public static int Main()
43         {
44                 CanonicalizeTest ();
45                 return failure ? 1 : 0;
46         }
47 }