\r
namespace MonoTests.System\r
{\r
-#if NET_2_0\r
// help bring Moonlight tests back to mono/mcs nunit\r
\r
public delegate void TestCode ();\r
throw new AssertionException (string.Format ("Expected '{0}', but got no exception. {1}", expected_exception.FullName, message));\r
}\r
}\r
-#endif\r
+
[TestFixture]\r
public class UriTest2\r
{\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
\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
if (Path.DirectorySeparatorChar == '\\')\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
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
}\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
}\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
{\r
new Uri ("http://127.0.0.1::::/");\r
}\r
-#if NET_2_0\r
+
[Test]\r
public void File ()\r
{\r
Assert.AreEqual (uri.Port.ToString (), uri.GetComponents (UriComponents.StrongPort, UriFormat.Unescaped), "StrongPort");\r
Assert.AreEqual (uri.UserInfo, uri.GetComponents (UriComponents.UserInfo, UriFormat.Unescaped), "UserInfo");\r
}\r
-#endif
[Test]
public void Merge_Query_Fragment ()
Assert.IsFalse (uri.IsWellFormedOriginalString (), "IsWellFormedOriginalString");
Assert.AreEqual (String.Empty, uri.Host, "Host");
Assert.AreEqual ("c:\\dir\\subdir\\file", uri.LocalPath, "LocalPath");
+ // make the next assert work on both Windows and Mac (wrt Silverlight)
+ Assert.AreEqual ("mono:c:/dir/subdir/file", uri.ToString ().Replace ("%5C", "/"), "ToString");
uri = new Uri ("mono://host/dir/subdir/file");
Assert.IsTrue (uri.IsWellFormedOriginalString (), "2/IsWellFormedOriginalString");
Assert.AreEqual (String.Empty, uri.Host, "4/Host");
Assert.AreEqual ("//host/dir/subdir/file", uri.AbsolutePath, "4/AbsolutePath");
Assert.AreEqual ("//host/dir/subdir/file", uri.LocalPath, "4/LocalPath");
+
+ // query and fragment
+ uri = new Uri ("mono://host/dir/subdir/file?query#fragment");
+ Assert.AreEqual ("/dir/subdir/file", uri.AbsolutePath, "qf.AbsolutePath");
+ Assert.AreEqual ("?query", uri.Query, "qf.Query");
+ Assert.AreEqual ("#fragment", uri.Fragment, "qf.Fragment");
+
+ // special characters
+ uri = new Uri ("mono://host/<>%\"{}|\\^`;/:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
}
[Test]
Assert.AreEqual ("subdir/", segments [2].Replace ("%5C", "/"), "s[2]");
Assert.AreEqual ("file", segments [3], "s[3]");
}
+
+ [Test]
+ public void NewsScheme ()
+ {
+ Uri uri = new Uri ("news:novell.mono.moonlight/uri?query");
+
+ Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("news:novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual (String.Empty, uri.Authority, "Authority");
+ Assert.AreEqual (String.Empty, uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual (String.Empty, uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Unknown, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("news:novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (-1, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("news", uri.Scheme, "Scheme");
+ Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("uri%3Fquery", uri.Segments [1], "Segments [1]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special escaped characters - they differs a bit from other URI
+ uri = new Uri ("news:novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void NntpScheme ()
+ {
+ Uri uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query");
+
+ Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("news.mono-project.com", uri.Authority, "Authority");
+ Assert.AreEqual ("news.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual ("news.mono-project.com", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("/novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (119, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("nntp", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [1], "Segments [1]");
+ Assert.AreEqual ("uri%3Fquery", uri.Segments [2], "Segments [2]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special escaped characters - they differs a bit from other URI
+ uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void FtpScheme ()
+ {
+ // user, password, custom port and a "query"
+ Uri uri = new Uri ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest");
+ Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip%3Flatest-n-greatest", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("ftp.mono-project.com:2121", uri.Authority, "Authority");
+ Assert.AreEqual ("ftp.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual ("ftp.mono-project.com", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsFalse (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("/mono.zip?latest-n-greatest", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (2121, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("ftp", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("mono.zip%3Flatest-n-greatest", uri.Segments [1], "Segments [1]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual ("user:password", uri.UserInfo, "UserInfo");
+
+ // special characters and fragment
+ uri = new Uri ("ftp://ftp.mono-project.com/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void FileScheme ()
+ {
+ Uri uri = new Uri ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment");
+ Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("file://host/dir/subdir/file%3Fthis-is-not-a-query#but-this-is-a-fragment", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("host", uri.Authority, "Authority");
+ Assert.AreEqual ("host", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual ("#but-this-is-a-fragment", uri.Fragment, "Fragment");
+ Assert.AreEqual ("host", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsTrue (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsTrue (uri.IsUnc, "IsUnc");
+ Assert.AreEqual (isWin32 ? "\\\\host\\dir\\subdir\\file?this-is-not-a-query" : "/dir/subdir/file?this-is-not-a-query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (-1, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("file", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("dir/", uri.Segments [1], "Segments [1]");
+ Assert.AreEqual ("subdir/", uri.Segments [2], "Segments [2]");
+ Assert.AreEqual ("file%3Fthis-is-not-a-query", uri.Segments [3], "Segments [3]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special characters
+ uri = new Uri ("file://host/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ }
}\r
}\r