Fixes and test refactoring for - VirtualPathUtility.cs class and respective test.
authorIlya Kharmatsky <ilya@mono-cvs.ximian.com>
Mon, 15 Jan 2007 13:13:19 +0000 (13:13 -0000)
committerIlya Kharmatsky <ilya@mono-cvs.ximian.com>
Mon, 15 Jan 2007 13:13:19 +0000 (13:13 -0000)
svn path=/trunk/mcs/; revision=71026

mcs/class/System.Web/System.Web/ChangeLog
mcs/class/System.Web/System.Web/VirtualPathUtility.cs
mcs/class/System.Web/Test/System.Web/ChangeLog
mcs/class/System.Web/Test/System.Web/VirtualPathUtilityTest.cs

index 352535b87bcab78caaba1d8602d636fe1599fe47..c759740c0f2d90a6891f5c5225d0178487e2e60a 100644 (file)
@@ -1,3 +1,8 @@
+2007-01-15  Ilya Kharmatsky   <ilya -at- decode-systems.com>
+
+       * VirtualPathUtility.cs: fixed bugs in methods - GetDirectory and
+       GetExtension, according to the VirtualPathUtilityTest
+
 2007-01-15  Vladimir Krasnov  <vladimirk@mainsoft.com>
 
        * SiteMapProvider.cs: fixed IsAccessibleToUser, true if
index 2d70f3e13a1ae09561e59179e9fb7ba8aa628c52..1392f5df4742f266c2b7452e6965831b5445d447 100644 (file)
@@ -83,13 +83,27 @@ namespace System.Web {
                        if (virtualPath [0] != '/')\r
                                throw new ArgumentException ("The virtual path is not rooted", "virtualPath");\r
 \r
-                       string result = UrlUtils.GetDirectory (virtualPath);\r
+                       if (virtualPath == "/")\r
+                               return null; //.net behavior\r
+\r
+                       //In .Net - will look for one '/' before the last one, and will return it as a directory\r
+                       //therefor we always should remove the last slash.\r
+                       if (virtualPath.EndsWith("/")) \r
+                               virtualPath = virtualPath.Substring(0, virtualPath.Length - 1);\r
+\r
+                       string result = UrlUtils.GetDirectory (virtualPath);\r
                        return AppendTrailingSlash (result);\r
                }\r
 \r
                public static string GetExtension (string virtualPath)\r
                {\r
-                       string filename = GetFileName (virtualPath);\r
+                       if (virtualPath != null && virtualPath != "" && \r
+                               virtualPath.IndexOf('/') == -1)\r
+                       {\r
+                               virtualPath = "./" + virtualPath;\r
+                       }\r
+\r
+                       string filename = GetFileName (virtualPath);\r
                        int dot = filename.LastIndexOf ('.');\r
                        if (dot == -1 || dot == filename.Length + 1)\r
                                return "";\r
@@ -221,3 +235,4 @@ namespace System.Web {
 \r
 #endif\r
 \r
+\r
index 5ca89c544225c0b8308a0303ac5e6d0dc100dd64..01c8ef4b0595eff55b7b307118f399f4e32e3146 100644 (file)
@@ -1,3 +1,16 @@
+2007-01-15 Ilya Kharmatsky  <ilya -at- decode-systems.com>
+       
+       * VirtualPathUtility.cs : 
+               - ToAbsoluteXXX (where XXX are numbers between 1-7) tests
+                 transformed to WebTest - since the real-life scenarios 
+                 for those tests are in web context.
+               - Removed NotWorking attributes - fixed bugs in
+                 VirtualPathUtility - GetDirectory and GetExtension, and
+                 moving ToAbsoluteXXX test to web tests.
+               - MakeRelative5 test has been splatted to 2 different tests 
+                 - added MakeRelative6
+               - Removed 'TARGET_JVM' directives
+
 2006-12-12 Igor Zelmanovich <igorz@mainsoft.com>
 
        * StaticSiteMapProviderTest.cs: new tests added.
index e80e50eb917f2d9b2ef159590a844664ae23740b..b45195c273ff06ce4d1e4ae7e5d15ac5e0190c0c 100644 (file)
@@ -32,6 +32,9 @@
 using System;\r
 using System.Web;\r
 using VPU = System.Web.VirtualPathUtility;\r
+using MonoTests.SystemWeb.Framework;\r
+using MonoTests.stand_alone.WebHarness;\r
+using System.Web.UI;\r
 \r
 using NUnit.Framework;\r
 \r
@@ -104,7 +107,6 @@ namespace MonoTests.System.Web {
                }\r
 \r
                [Test]\r
-               [Category ("NotWorking")]\r
                public void GetDirectory ()\r
                {\r
                        Assert.AreEqual ("/hi/", VPU.GetDirectory ("/hi/there"), "A1");\r
@@ -125,7 +127,6 @@ namespace MonoTests.System.Web {
                }\r
 \r
                [Test]\r
-               [Category ("NotWorking")]\r
                public void GetExtension ()\r
                {\r
                        Assert.AreEqual (".aspx", VPU.GetExtension ("/hi/index.aspx"), "A1");\r
@@ -365,14 +366,20 @@ namespace MonoTests.System.Web {
                }\r
 \r
                [Test]\r
-               [Category ("NotWorking")]\r
                public void MakeRelative5 ()\r
                {\r
                        Assert.AreEqual ("", VPU.MakeRelative ("", ""));\r
                        Assert.AreEqual ("", VPU.MakeRelative ("/something", ""));\r
-                       Assert.AreEqual ("./", VPU.MakeRelative ("/", "/"));\r
                }\r
 \r
+        [Test]\r
+        [Category ("NotWorking")]\r
+        public void MakeRelative6()\r
+        {\r
+            //The test is not working due to the : System.URI.MakeRelativeUri - not implemented exception\r
+            Assert.AreEqual("./", VPU.MakeRelative("/", "/"));\r
+        }\r
+\r
                [Test]\r
                public void RemoveTrailingSlash2 ()\r
                {\r
@@ -385,65 +392,91 @@ namespace MonoTests.System.Web {
                }\r
 \r
                [Test]\r
-               [Category ("NotWorking")]\r
+        [Category("NunitWeb")]\r
                [ExpectedException (typeof (ArgumentNullException))]\r
                public void ToAbsolute1 ()\r
                {\r
-                       VPU.ToAbsolute (null);\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute1_Load)).Run();\r
                }\r
 \r
+        public static void ToAbsolute1_Load(Page p)\r
+        {\r
+            VPU.ToAbsolute(null);\r
+        }\r
+\r
                [Test]\r
-               [Category ("NotWorking")]\r
+        [Category("NunitWeb")]\r
                [ExpectedException (typeof (ArgumentNullException))]\r
                public void ToAbsolute2 ()\r
                {\r
-                       VPU.ToAbsolute ("");\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute2_Load)).Run();\r
                }\r
 \r
+        public static void ToAbsolute2_Load(Page p) \r
+        {\r
+            VPU.ToAbsolute("");\r
+        }\r
+\r
                [Test]\r
-               [Category ("NotWorking")]\r
+        [Category("NunitWeb")]\r
                [ExpectedException (typeof (ArgumentException))]\r
                public void ToAbsolute3 ()\r
                {\r
-                       VPU.ToAbsolute ("..");\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute3_Load)).Run();\r
                }\r
 \r
+        public static void ToAbsolute3_Load(Page p)\r
+        {\r
+            VPU.ToAbsolute("..");\r
+        }\r
+\r
                [Test]\r
-               [Category ("NotWorking")]\r
+               [Category ("NunitWeb")]\r
                [ExpectedException (typeof (ArgumentException))]\r
                public void ToAbsolute4 ()\r
                {\r
-                       VPU.ToAbsolute ("...");\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute4_Load)).Run();\r
                }\r
 \r
+        public static void ToAbsolute4_Load(Page p)\r
+        {\r
+            VPU.ToAbsolute("...");\r
+        }\r
+\r
                [Test]\r
-               [Category ("NotWorking")]\r
+               [Category ("NunitWeb")]\r
                [ExpectedException (typeof (ArgumentException))]\r
                public void ToAbsolute5 ()\r
                {\r
-                       VPU.ToAbsolute ("../blah");\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute5_Load)).Run();\r
                }\r
 \r
+        public static void ToAbsolute5_Load(Page p)\r
+        {\r
+            VPU.ToAbsolute("../blah");\r
+        }\r
+\r
                [Test]\r
-               [ExpectedException (typeof (HttpException))]\r
-#if TARGET_JVM\r
-               [Ignore ("TD #6964")]\r
-#endif\r
-               public void ToAbsolute6 ()\r
+        [Category("NunitWeb")]\r
+        public void ToAbsolute6()\r
                {\r
-                       VPU.ToAbsolute ("~/");\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute6_Load)).Run();\r
                }\r
+        public static void ToAbsolute6_Load(Page p)\r
+        {\r
+            Assert.IsNotEmpty(VPU.ToAbsolute("~/"));\r
+        }\r
 \r
                [Test]\r
-               [ExpectedException (typeof (HttpException))]\r
-#if TARGET_JVM\r
-               [Ignore ("TD #6964")]\r
-#endif\r
+               [Category("NunitWeb")]\r
                public void ToAbsolute7 ()\r
                {\r
-                       Assert.AreEqual ("/", VPU.ToAbsolute ("/"));\r
+            new WebTest(PageInvoker.CreateOnLoad(ToAbsolute7_Load)).Run();\r
                }\r
-\r
+        public static void ToAbsolute7_Load(Page p)\r
+        {\r
+            Assert.AreEqual("/", VPU.ToAbsolute("/"));\r
+        }\r
                [Test]\r
                public void ToAbsolute8 ()\r
                {\r
@@ -491,3 +524,4 @@ namespace MonoTests.System.Web {
 \r
 #endif\r
 \r
+\r