2 // System.Web.VirtualPathUtilityTest.cs - Unit tests for System.Web.VirtualPathUtility
5 // Chris Toshok <toshok@novell.com>
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using NUnit.Framework;
36 namespace MonoTests.System.Web {
39 public class VirtualPathUtilityTest {
41 public void AppendTrailingSlash ()
43 Assert.AreEqual ("/hithere/", VirtualPathUtility.AppendTrailingSlash ("/hithere"), "A1");
44 Assert.AreEqual ("/hithere/", VirtualPathUtility.AppendTrailingSlash ("/hithere/"), "A2");
45 Assert.AreEqual ("/", VirtualPathUtility.AppendTrailingSlash ("/"), "A3");
46 Assert.AreEqual ("", VirtualPathUtility.AppendTrailingSlash (""), "A4");
47 Assert.AreEqual (null, VirtualPathUtility.AppendTrailingSlash (null), "A5");
51 public void Combine ()
53 Assert.AreEqual ("/there", VirtualPathUtility.Combine ("/hi", "there"), "A1");
54 Assert.AreEqual ("/hi/you", VirtualPathUtility.Combine ("/hi/there", "you"), "A2");
55 Assert.AreEqual ("/hi/there/you", VirtualPathUtility.Combine ("/hi/there/", "you"), "A3");
59 [ExpectedException (typeof (ArgumentException))]
60 public void Combine_ArgException1 ()
62 Assert.AreEqual ("hi/there/you", VirtualPathUtility.Combine ("hi/there", "you"), "A1");
66 [ExpectedException (typeof (ArgumentException))]
67 public void Combine_ArgException2 ()
69 Assert.AreEqual ("hi/there", VirtualPathUtility.Combine ("hi/there", null), "A1");
73 [ExpectedException (typeof (ArgumentNullException))]
74 public void Combine_ArgException3 ()
76 Assert.AreEqual ("hi/there", VirtualPathUtility.Combine (null, "there"), "A1");
80 [ExpectedException (typeof (ArgumentNullException))]
82 at System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
83 at System.Web.VirtualPathUtility.Combine(String basePath, String relativePath)
84 at MonoTests.System.Web.VirtualPathUtilityTest.Combine()
86 public void Combine_ArgException4 ()
88 Assert.AreEqual ("/you", VirtualPathUtility.Combine ("", "you"), "A1");
92 [ExpectedException (typeof (ArgumentNullException))]
94 at System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
95 at System.Web.VirtualPathUtility.Combine(String basePath, String relativePath)
96 at MonoTests.System.Web.VirtualPathUtilityTest.Combine()
98 public void Combine_ArgException5 ()
100 Assert.AreEqual ("/hi", VirtualPathUtility.Combine ("/hi", ""), "A1");
104 public void GetDirectory ()
106 Assert.AreEqual ("/hi/", VirtualPathUtility.GetDirectory ("/hi/there"), "A1");
107 Assert.AreEqual ("/hi/", VirtualPathUtility.GetDirectory ("/hi/there/"), "A2");
108 Assert.AreEqual (null, VirtualPathUtility.GetDirectory ("/"), "A3");
112 [ExpectedException (typeof (ArgumentNullException))]
114 at System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
115 at System.Web.VirtualPathUtility.GetDirectory(String virtualPath)
116 at MonoTests.System.Web.VirtualPathUtilityTest.GetDirectory()
118 public void GetDirectory_ArgException1 ()
120 Assert.AreEqual ("", VirtualPathUtility.GetDirectory (""), "A1");
124 public void GetExtension ()
126 Assert.AreEqual (".aspx", VirtualPathUtility.GetExtension ("/hi/index.aspx"), "A1");
127 Assert.AreEqual (".aspx", VirtualPathUtility.GetExtension ("index.aspx"), "A2");
128 Assert.AreEqual ("", VirtualPathUtility.GetExtension ("/hi/index"), "A3");
132 [ExpectedException (typeof (ArgumentNullException))]
133 public void GetExtension_ArgException1 ()
135 Assert.AreEqual (null, VirtualPathUtility.GetExtension (null), "A1");
139 [ExpectedException (typeof (ArgumentNullException))]
140 public void GetExtension_ArgException2 ()
142 Assert.AreEqual ("", VirtualPathUtility.GetExtension (""), "A1");
146 public void GetFileName ()
148 Assert.AreEqual ("index.aspx", VirtualPathUtility.GetFileName ("/hi/index.aspx"), "A1");
149 Assert.AreEqual ("hi", VirtualPathUtility.GetFileName ("/hi/"), "A2");
153 [ExpectedException (typeof (ArgumentNullException))]
154 public void GetFileName_ArgException1 ()
156 Assert.AreEqual (null, VirtualPathUtility.GetFileName (null), "A1");
160 [ExpectedException (typeof (ArgumentNullException))]
161 public void GetFileName_ArgException2 ()
163 Assert.AreEqual ("", VirtualPathUtility.GetFileName (""), "A1");
167 [ExpectedException (typeof (ArgumentException))]
168 public void GetFileName_ArgException3 ()
170 Assert.AreEqual ("index.aspx", VirtualPathUtility.GetFileName ("index.aspx"), "A1");
174 public void IsAbsolute ()
176 Assert.IsTrue (VirtualPathUtility.IsAbsolute ("/"), "A1");
177 Assert.IsTrue (VirtualPathUtility.IsAbsolute ("/hi/there"), "A2");
178 Assert.IsFalse (VirtualPathUtility.IsAbsolute ("hi/there"), "A3");
179 Assert.IsFalse (VirtualPathUtility.IsAbsolute ("./hi"), "A4");
183 [ExpectedException (typeof (ArgumentNullException))]
184 public void IsAbsolute_ArgException1 ()
186 Assert.IsFalse (VirtualPathUtility.IsAbsolute (""), "A1");
190 [ExpectedException (typeof (ArgumentNullException))]
191 public void IsAbsolute_ArgException2 ()
193 Assert.IsFalse (VirtualPathUtility.IsAbsolute (null), "A1");
197 public void IsAppRelative ()
199 Assert.IsTrue (VirtualPathUtility.IsAppRelative ("~/Stuff"), "A1");
200 Assert.IsFalse (VirtualPathUtility.IsAppRelative ("./Stuff"), "A2");
201 Assert.IsFalse (VirtualPathUtility.IsAppRelative ("/Stuff"), "A3");
202 Assert.IsFalse (VirtualPathUtility.IsAppRelative ("/"), "A4");
206 [ExpectedException (typeof (ArgumentNullException))]
207 public void IsAppRelative_ArgException1 ()
209 Assert.IsFalse (VirtualPathUtility.IsAppRelative (""), "A1");
213 [ExpectedException (typeof (ArgumentNullException))]
214 public void IsAppRelative_ArgException2 ()
216 Assert.IsFalse (VirtualPathUtility.IsAppRelative (null), "A1");
221 /* this test when run on MS generates the following stack trace (NRE):
222 at System.Web.Util.UrlPath.MakeVirtualPathAppAbsolute(String virtualPath, String applicationPath)
223 at System.Web.Util.UrlPath.MakeRelative(String from, String to)
224 at System.Web.VirtualPathUtility.MakeRelative(String fromPath, String toPath)
225 at MonoTests.System.Web.VirtualPathUtilityTest.MakeRelative()
227 public void MakeRelative ()
229 Assert.AreEqual ("../bar", VirtualPathUtility.MakeRelative ("~/foo/hi", "~/foo/bar"), "A1");
234 public void RemoveTrailingSlash ()
236 Assert.AreEqual ("/hi/there", VirtualPathUtility.RemoveTrailingSlash ("/hi/there/"), "A1");
237 Assert.AreEqual ("/hi/there", VirtualPathUtility.RemoveTrailingSlash ("/hi/there"), "A2");
238 Assert.AreEqual ("/", VirtualPathUtility.RemoveTrailingSlash ("/"), "A3");
239 Assert.AreEqual (null, VirtualPathUtility.RemoveTrailingSlash (""), "A4");
240 Assert.AreEqual (null, VirtualPathUtility.RemoveTrailingSlash (null), "A5");