[TestFixture]
public class UriTest
{
- protected bool isWin32 = false;
- public bool IriParsing;
+ bool isWin32;
[TestFixtureSetUp]
public void GetReady ()
{
isWin32 = (Path.DirectorySeparatorChar == '\\');
-
- //Make sure Uri static constructor is called
- Uri.EscapeDataString ("");
-
- FieldInfo iriParsingField = typeof (Uri).GetField ("s_IriParsing",
- BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
- if (iriParsingField != null)
- IriParsing = (bool)iriParsingField.GetValue (null);
}
[Test]
Uri u1 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx");
Uri u2 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx");
- if (IriParsing)
- Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx", u1.ToString (), "QE1");
- else
- Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=/SearchDoc/Searcher.aspx", u1.ToString (), "QE1");
+ Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx", u1.ToString (), "QE1");
Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx", u2.ToString (), "QE2");
}
}
[Test]
- [Category("NotDotNet")]
public void CheckHostName1 ()
{
// reported to MSDN Product Feedback Center (FDBK28671)
- Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName (":11:22:33:44:55:66:77:88"), "#36 known to fail with ms.net: this is not a valid IPv6 address.");
+ Assert.AreEqual (UriHostNameType.IPv6, Uri.CheckHostName (":11:22:33:44:55:66:77:88"), "#36 known to fail with ms.net: this is not a valid IPv6 address.");
}
[Test]
Assert.AreEqual ("http://www.xxx.com/bar/foo/foobar.htm?z=0&y=5" + (char) 0xa9, uri1.MakeRelative (uri8), "#14");
}
- [Test]
- [Category ("NotWorking")]
- public void RelativeUri ()
- {
- var u = new Uri ("/foo/bar");
- Assert.IsFalse (u.IsAbsoluteUri, "#1");
- }
-
[Test]
public void RelativeFragmentUri ()
{
Assert.AreEqual ("file", unixuri.Scheme, "UnixAbsoluteFilePath_WithSpecialChars #2");
}
+ [Test]
+ [Category ("NotDotNet")]
+ public void UnixAbsolutePath_ReplaceRelative ()
+ {
+ var u1 = new Uri ("/Users/demo/Projects/file.xml");
+ var u2 = new Uri (u1, "b.jpg");
+
+ Assert.AreEqual ("file:///Users/demo/Projects/b.jpg", u2.ToString ());
+ }
+
[Test]
public void RelativeUriWithColons ()
{
[Test]
public void DotNetRelativeOrAbsoluteTest ()
{
- var uri1 = new Uri ("/foo", DotNetRelativeOrAbsolute);
- Assert.IsFalse (uri1.IsAbsoluteUri);
-
- Uri uri2;
- Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri2);
- Assert.IsFalse (uri2.IsAbsoluteUri);
+ FieldInfo useDotNetRelativeOrAbsoluteField = null;
+ bool useDotNetRelativeOrAbsoluteOld = false;
+
+ if (Type.GetType ("Mono.Runtime") != null) {
+ useDotNetRelativeOrAbsoluteField = typeof (Uri).GetField ("useDotNetRelativeOrAbsolute",
+ BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
+ useDotNetRelativeOrAbsoluteOld = (bool) useDotNetRelativeOrAbsoluteField.GetValue (null);
+ useDotNetRelativeOrAbsoluteField.SetValue (null, false);
+ }
+
+ try {
+ Uri uri;
+
+ uri = new Uri ("/foo", DotNetRelativeOrAbsolute);
+ Assert.IsFalse (uri.IsAbsoluteUri, "#2");
+
+ Assert.IsTrue (Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri), "#3");
+ Assert.IsFalse (uri.IsAbsoluteUri, "#3a");
+
+ if (useDotNetRelativeOrAbsoluteField != null) {
+ uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
+ Assert.IsTrue (uri.IsAbsoluteUri, "#4");
+
+ Assert.IsTrue (Uri.TryCreate("/foo", UriKind.RelativeOrAbsolute, out uri), "#5");
+ Assert.IsTrue (uri.IsAbsoluteUri, "#5a");
+
+ useDotNetRelativeOrAbsoluteField.SetValue (null, true);
+ }
+
+ uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
+ Assert.IsFalse (uri.IsAbsoluteUri, "#10");
+
+ Assert.IsTrue (Uri.TryCreate("/foo", UriKind.RelativeOrAbsolute, out uri), "#11");
+ Assert.IsFalse (uri.IsAbsoluteUri, "#11a");
+ } finally {
+ if (useDotNetRelativeOrAbsoluteField != null)
+ useDotNetRelativeOrAbsoluteField.SetValue (null, useDotNetRelativeOrAbsoluteOld);
+ }
}
[Test]
}
}
}
- }
- // Tests non default IriParsing
- [TestFixture]
- public class UriTestAux : UriTest
- {
- private FieldInfo iriParsingField;
- private bool originalIriParsing;
+ [Test]
+ public void UserInfo_Spaces ()
+ {
+ const string userinfo = "test 1:pass 1";
+ const string expected = "test%201:pass%201";
- [TestFixtureSetUp]
- public void GetReady2 ()
+ try {
+ var uri = new Uri (string.Format ("rtmp://{0}@test.com:333/live", userinfo));
+ Assert.AreEqual (expected, uri.UserInfo);
+ } catch (Exception e) {
+ Assert.Fail (string.Format ("Unexpected {0} while building URI with username {1}", e.GetType ().Name, userinfo));
+ }
+ }
+
+ // Covers #29864
+ [Test]
+ public void PathDotTrim ()
{
- isWin32 = (Path.DirectorySeparatorChar == '\\');
+ var baseUri = new Uri ("http://test.com", UriKind.Absolute);
+ var relUri = new Uri ("path/dot./", UriKind.Relative);
+ var uri = new Uri (baseUri, relUri);
+ Assert.AreEqual ("http://test.com/path/dot./", uri.ToString ());
+ }
- //Make sure Uri static constructor is called
- Uri.EscapeDataString ("");
+ [Test]
+ public void GuardedIPv6Address ()
+ {
+ var x = new Uri ("asfd://[::1]:123/");
+ Assert.AreEqual ("[::1]", x.Host, "#1");
+ }
- iriParsingField = typeof (Uri).GetField ("s_IriParsing",
- BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
+ [Test]
+ public void CombineWithUserSchema ()
+ {
+ var baseUri = new Uri ("zip:mem:///");
+ var relativeUrl = "zip:mem:///foo/bar.txt";
- originalIriParsing = (bool) iriParsingField.GetValue (null);
+ var result = new Uri (baseUri, relativeUrl);
- IriParsing = !originalIriParsing;
+ Assert.AreEqual ("zip:mem:///foo/bar.txt", result.ToString ());
+ }
+
+ [Test]
+ public void Scheme_msapp ()
+ {
+ var uri = new Uri ("ms-app://s-1-15-2-1613647288");
+ Assert.AreEqual ("ms-app", uri.Scheme);
+ }
+
+ [Test]
+ public void CombineWithUnixAbsolutePath ()
+ {
+ var a = new Uri ("http://localhost/");
+ var b = new Uri ("/foo", UriKind.RelativeOrAbsolute);
+ var res = new Uri (a, b);
- iriParsingField.SetValue (null, IriParsing);
+ Assert.AreEqual ("http://localhost/foo", res.ToString ());
}
- [TestFixtureTearDown]
- public void TearDown ()
+ [Test]
+ public void ImplicitUnixFileWithUnicode ()
+ {
+ string value = "/Library/Frameworks/System.Runtim…ee";
+ Uri uri;
+ Assert.IsTrue (Uri.TryCreate (value, UriKind.Absolute, out uri));
+ }
+
+ [Test]
+ public void UncValidPath ()
{
- iriParsingField.SetValue (null, originalIriParsing);
+ var uri = new Uri ("https://_foo/bar.html");
+ Assert.AreEqual ("https", uri.Scheme);
}
}
}