[Test]
public void DotNetRelativeOrAbsoluteTest ()
{
- Uri uri;
-
- uri = new Uri ("/foo", DotNetRelativeOrAbsolute);
- Assert.IsFalse (uri.IsAbsoluteUri);
-
- Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri);
- Assert.IsFalse (uri.IsAbsoluteUri);
+ FieldInfo useDotNetRelativeOrAbsoluteField = null;
+ bool useDotNetRelativeOrAbsoluteOld = false;
if (Type.GetType ("Mono.Runtime") != null) {
- uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
- Assert.IsTrue (uri.IsAbsoluteUri);
+ useDotNetRelativeOrAbsoluteField = typeof (Uri).GetField ("useDotNetRelativeOrAbsolute",
+ BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
+ useDotNetRelativeOrAbsoluteOld = (bool) useDotNetRelativeOrAbsoluteField.GetValue (null);
+ useDotNetRelativeOrAbsoluteField.SetValue (null, false);
+ }
+
+ try {
+ Uri uri;
- Uri.TryCreate("/foo", UriKind.RelativeOrAbsolute, out uri);
- Assert.IsTrue (uri.IsAbsoluteUri);
+ uri = new Uri ("/foo", DotNetRelativeOrAbsolute);
+ Assert.IsFalse (uri.IsAbsoluteUri);
+
+ Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri);
+ Assert.IsFalse (uri.IsAbsoluteUri);
- var useDotNetRelativeOrAbsoluteField = typeof (Uri).GetField ("useDotNetRelativeOrAbsolute",
- BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
+ if (useDotNetRelativeOrAbsoluteField != null) {
+ uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
+ Assert.IsTrue (uri.IsAbsoluteUri);
- useDotNetRelativeOrAbsoluteField.SetValue (null, true);
- }
+ Uri.TryCreate("/foo", UriKind.RelativeOrAbsolute, out uri);
+ Assert.IsTrue (uri.IsAbsoluteUri);
- uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
- Assert.IsFalse (uri.IsAbsoluteUri);
+ useDotNetRelativeOrAbsoluteField.SetValue (null, true);
+ }
- Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri);
- Assert.IsFalse (uri.IsAbsoluteUri);
+ uri = new Uri ("/foo", UriKind.RelativeOrAbsolute);
+ Assert.IsFalse (uri.IsAbsoluteUri);
+
+ Uri.TryCreate("/foo", DotNetRelativeOrAbsolute, out uri);
+ Assert.IsFalse (uri.IsAbsoluteUri);
+ } finally {
+ if (useDotNetRelativeOrAbsoluteField != null)
+ useDotNetRelativeOrAbsoluteField.SetValue (null, useDotNetRelativeOrAbsoluteOld);
+ }
}
[Test]