+ 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