1 //
2 // Mono.Unix.UnixPath Test Cases
3 //
4 // Authors:
5 //  Jonathan Pryor (jonpryor@vt.edu)
6 //
7 // (c) 2006 Jonathan Pryor
8 //
9 
10 using NUnit.Framework;
11 using System.IO;
12 using System;
13 using System.Text;
14 using Mono.Unix;
15 
16 namespace MonoTests.Mono.Unix
17 {
18 
19 	[TestFixture, Category ("NotDotNet"), Category ("NotOnWindows")]
20 	public class UnixPathTest {
21 
22 		private static readonly char DSC = UnixPath.DirectorySeparatorChar;
23 
24 		[Test]
Combine()25 		public void Combine ()
26 		{
27 			string path, expected;
28 			string current = UnixDirectoryInfo.GetCurrentDirectory ();
29 
30 			path = UnixPath.Combine ("/etc", "init.d");
31 			Assert.AreEqual ("/etc/init.d", path);
32 
33 			path = UnixPath.Combine ("one", "");
34 			Assert.AreEqual ("one", path);
35 
36 			path = UnixPath.Combine ("", "one");
37 			Assert.AreEqual ("one", path);
38 
39 			path = UnixPath.Combine (current, "one");
40 			expected = (current == "/" ? String.Empty : current) + DSC + "one";
41 			Assert.AreEqual (expected, path);
42 
43 			path = UnixPath.Combine ("one", current);
44 			Assert.AreEqual (current, path);
45 
46 			path = UnixPath.Combine (current, expected);
47 			Assert.AreEqual (expected, path);
48 
49 			path = DSC + "one";
50 			path = UnixPath.Combine (path, "two" + DSC);
51 			expected = DSC + "one" + DSC + "two" + DSC;
52 			Assert.AreEqual (expected, path);
53 
54 			path = "one" + DSC;
55 			path = UnixPath.Combine (path, DSC + "two");
56 			expected = DSC + "two";
57 			Assert.AreEqual (expected, path);
58 
59 			path = "one" + DSC;
60 			path = UnixPath.Combine (path, "two" + DSC);
61 			expected = "one" + DSC + "two" + DSC;
62 			Assert.AreEqual (expected, path);
63 
64 			path = UnixPath.Combine ("/a", "b", "c", "/d", "e");
65 			expected = "/d/e";
66 			Assert.AreEqual (expected, path);
67 
68 			try {
69 				path = UnixPath.Combine ("one", null);
70 				Assert.Fail ("Combine Fail #01");
71 			}
72 			catch (Exception e) {
73 				Assert.AreEqual (typeof (ArgumentNullException), e.GetType ());
74 			}
75 
76 			try {
77 				path = UnixPath.Combine (null, "one");
78 				Assert.Fail ("Combine Fail #02");
79 			}
80 			catch (Exception e) {
81 				Assert.AreEqual (typeof (ArgumentNullException), e.GetType ());
82 			}
83 		}
84 	}
85 }
86 
87