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