New test.
[mono.git] / mcs / class / System / Test / System / UriTest2.cs
old mode 100755 (executable)
new mode 100644 (file)
index 4e5452a..6738006
@@ -1,3 +1,7 @@
+//\r
+// UriTest2.cs - More NUnit Test Cases for System.Uri\r
+//
+\r
 using System;\r
 using System.IO;
 using System.Reflection;\r
@@ -7,7 +11,7 @@ using NUnit.Framework;
 namespace MonoTests.System\r
 {\r
        [TestFixture]\r
-       public class UriTest2 : Assertion\r
+       public class UriTest2\r
        {\r
                // Segments cannot be validated here...\r
                public void AssertUri (string relsrc, Uri uri,\r
@@ -29,28 +33,31 @@ namespace MonoTests.System
                        string fragment,\r
                        string userInfo)\r
                {\r
-                       AssertEquals (relsrc + " AbsoluteUri", absoluteUri, uri.AbsoluteUri);\r
-                       AssertEquals (relsrc + " Scheme", scheme, uri.Scheme);\r
-                       AssertEquals (relsrc + " Host", host, uri.Host);\r
-                       AssertEquals (relsrc + " Port", port, uri.Port);\r
+                       Assert.AreEqual (absoluteUri, uri.AbsoluteUri, relsrc + " AbsoluteUri");\r
+                       Assert.AreEqual (scheme, uri.Scheme, relsrc + " Scheme");\r
+                       Assert.AreEqual (host, uri.Host, relsrc + " Host");\r
+                       Assert.AreEqual (port, uri.Port, relsrc + " Port");\r
                        // Windows UNC path is not automatically testable on *nix environment,\r
                        if (relsrc.StartsWith ("\\\\") && Path.DirectorySeparatorChar == '\\')\r
-                               AssertEquals (relsrc + " LocalPath", localPath, uri.LocalPath);\r
-                       AssertEquals (relsrc + " Query", query, uri.Query);\r
-                       AssertEquals (relsrc + " Fragment", fragment, uri.Fragment);\r
-                       AssertEquals (relsrc + " IsFile", isFile, uri.IsFile);\r
-                       AssertEquals (relsrc + " IsUnc", isUnc, uri.IsUnc);\r
-                       AssertEquals (relsrc + " IsLoopback", isLoopback, uri.IsLoopback);\r
-                       AssertEquals (relsrc + " Authority", authority, uri.Authority);\r
-                       AssertEquals (relsrc + " UserEscaped", userEscaped, uri.UserEscaped);\r
-                       AssertEquals (relsrc + " UserInfo", userInfo, uri.UserInfo);\r
-                       AssertEquals (relsrc + " HostNameType", hostNameType, uri.HostNameType);\r
-                       AssertEquals (relsrc + " AbsolutePath", absolutePath, uri.AbsolutePath);\r
-                       AssertEquals (relsrc + " PathAndQuery", pathAndQuery, uri.PathAndQuery);\r
-                       AssertEquals (relsrc + " ToString()", toString, uri.ToString ());\r
+                               Assert.AreEqual (localPath, uri.LocalPath, relsrc + " LocalPath");\r
+                       Assert.AreEqual (query, uri.Query, relsrc + " Query");\r
+                       Assert.AreEqual (fragment, uri.Fragment, relsrc + " Fragment");\r
+                       Assert.AreEqual (isFile, uri.IsFile, relsrc + " IsFile");\r
+                       Assert.AreEqual (isUnc, uri.IsUnc, relsrc + " IsUnc");\r
+                       Assert.AreEqual (isLoopback, uri.IsLoopback, relsrc + " IsLoopback");\r
+                       Assert.AreEqual (authority, uri.Authority, relsrc + " Authority");\r
+                       Assert.AreEqual (userEscaped, uri.UserEscaped, relsrc + " UserEscaped");\r
+                       Assert.AreEqual (userInfo, uri.UserInfo, relsrc + " UserInfo");\r
+                       Assert.AreEqual (hostNameType, uri.HostNameType, relsrc + " HostNameType");\r
+                       Assert.AreEqual (absolutePath, uri.AbsolutePath, relsrc + " AbsolutePath");\r
+                       Assert.AreEqual (pathAndQuery, uri.PathAndQuery, relsrc + " PathAndQuery");\r
+                       Assert.AreEqual (toString, uri.ToString (), relsrc + " ToString()");\r
                }\r
 \r
                [Test]\r
+#if NET_2_0\r
+               [Ignore ("Tests needs to be updated for 2.0")]\r
+#endif\r
                public void AbsoluteUriFromFile ()\r
                {\r
                        FromResource ("test-uri-props.txt", null);\r
@@ -58,12 +65,18 @@ namespace MonoTests.System
                \r
                [Test]\r
                [Category("NotDotNet")]\r
+#if NET_2_0\r
+               [Ignore ("Tests needs to be updated for 2.0")]\r
+#endif\r
                public void AbsoluteUriFromFileManual ()\r
                {\r
                        FromResource ("test-uri-props-manual.txt", null);\r
                }\r
                \r
                [Test]\r
+#if NET_2_0\r
+               [Ignore ("Tests needs to be updated for 2.0")]\r
+#endif\r
                public void RelativeUriFromFile ()\r
                {\r
                        FromResource ("test-uri-relative-props.txt", new Uri ("http://www.go-mono.com"));\r
@@ -126,7 +139,7 @@ TextWriter sw = Console.Out;
                                                sr.ReadLine ());\r
 //                             Console.WriteLine ("Passed: " + uriString);\r
                                } catch (UriFormatException ex) {\r
-                                       Fail (String.Format ("Construction failed: [{0}] {1}", uriString, ex.Message));\r
+                                       Assert.Fail (String.Format ("Construction failed: [{0}] {1}", uriString, ex.Message));\r
                                }\r
                        }\r
                }\r
@@ -135,10 +148,91 @@ TextWriter sw = Console.Out;
                public void MoreUnescape () // bug 733316
                {
                        int index = 0;
-                       char unesc = Uri.HexUnescape ("%F6", ref index);
-                       AssertEquals ("#01", 3, index);
-                       AssertEquals ("#02", 0xf6, unesc);
-               }
+                       char unesc = Uri.HexUnescape ("%F6", ref index);\r
+                       Assert.AreEqual (3, index, "#01");\r
+                       Assert.AreEqual (0xf6, unesc, "#02");
+               }\r
+\r
+               [Test]\r
+               public void UriScheme ()\r
+               {\r
+                       Assert.AreEqual ("://", Uri.SchemeDelimiter, "://");\r
+                       Assert.AreEqual ("file", Uri.UriSchemeFile, "file");\r
+                       Assert.AreEqual ("ftp", Uri.UriSchemeFtp, "ftp");\r
+                       Assert.AreEqual ("gopher", Uri.UriSchemeGopher, "gopher");\r
+                       Assert.AreEqual ("http", Uri.UriSchemeHttp, "http");\r
+                       Assert.AreEqual ("https", Uri.UriSchemeHttps, "https");\r
+                       Assert.AreEqual ("mailto", Uri.UriSchemeMailto, "mailto");\r
+                       Assert.AreEqual ("news", Uri.UriSchemeNews, "news");\r
+                       Assert.AreEqual ("nntp", Uri.UriSchemeNntp, "file");\r
+#if NET_2_0\r
+                       Assert.AreEqual ("net.pipe", Uri.UriSchemeNetPipe, "net.pipe");\r
+                       Assert.AreEqual ("net.tcp", Uri.UriSchemeNetTcp, "net.tcp");\r
+#endif\r
+               }\r
+\r
+               [Test] // bug #71049\r
+               [ExpectedException (typeof (UriFormatException))]\r
+               public void StarsInHost ()\r
+               {\r
+                       new Uri ("http://w*w*w.go-mono.com");\r
+               }\r
+
+               [Test]\r
+#if ONLY_1_1\r
+               [Category ("NotDotNet")] // 1.x throws an UriFormatException\r
+#endif\r
+               public void NoHostName1_Bug76146 ()\r
+               {\r
+                       Uri u = new Uri ("foo:///?bar");\r
+                       Assert.AreEqual ("/", u.AbsolutePath, "AbsolutePath");\r
+                       Assert.AreEqual ("foo:///?bar", u.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual (String.Empty, u.Authority, "Authority");\r
+                       Assert.AreEqual (String.Empty, u.Fragment, "Fragment");\r
+                       Assert.AreEqual (String.Empty, u.Host, "Host");\r
+                       // FIXME (2.0) - Normally this is never Basic without an Host name :(
+                       // Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "HostNameType");\r
+                       Assert.IsTrue (u.IsDefaultPort, "IsDefaultPort");\r
+                       Assert.IsFalse (u.IsFile, "IsFile");\r
+                       // FIXME Assert.IsTrue (u.IsLoopback, "IsLoopback");\r
+                       Assert.IsFalse (u.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/", u.LocalPath, "LocalPath");\r
+                       Assert.AreEqual ("/?bar", u.PathAndQuery, "PathAndQuery");\r
+                       Assert.AreEqual ("foo", u.Scheme, "Scheme");\r
+                       Assert.IsFalse (u.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, u.UserInfo, "UserInfo");\r
+               }\r
+\r
+               [Test]\r
+#if ONLY_1_1\r
+               [Category ("NotDotNet")] // 1.x throws an UriFormatException\r
+#endif\r
+               public void NoHostName2_Bug76146 ()\r
+               {\r
+                       Uri u = new Uri ("foo:///bar");\r
+                       Assert.AreEqual ("/bar", u.AbsolutePath, "AbsolutePath");\r
+                       Assert.AreEqual ("foo:///bar", u.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual (String.Empty, u.Authority, "Authority");\r
+                       Assert.AreEqual (String.Empty, u.Fragment, "Fragment");\r
+                       Assert.AreEqual (String.Empty, u.Host, "Host");
+                       // FIXME (2.0) - Normally this is never Basic without an Host name :(
+                       // Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "HostNameType");\r
+                       Assert.IsTrue (u.IsDefaultPort, "IsDefaultPort");\r
+                       Assert.IsFalse (u.IsFile, "IsFile");\r
+                       // FIXME Assert.IsTrue (u.IsLoopback, "IsLoopback");\r
+                       Assert.IsFalse (u.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/bar", u.LocalPath, "LocalPath");\r
+                       Assert.AreEqual ("/bar", u.PathAndQuery, "PathAndQuery");\r
+                       Assert.AreEqual ("foo", u.Scheme, "Scheme");\r
+                       Assert.IsFalse (u.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, u.UserInfo, "UserInfo");\r
+               }\r
 \r
+               [Test]\r
+               [ExpectedException (typeof (UriFormatException))]\r
+               public void InvalidIPAddress_Bug76659 ()\r
+               {\r
+                       new Uri ("http://127.0.0.1::::/");\r
+               }\r
        }\r
 }\r