Merge pull request #1936 from esdrubal/DotNetRelativeOrAbsolute
authorMarcos Henrich <marcoshenrich@gmail.com>
Sat, 29 Aug 2015 11:24:02 +0000 (12:24 +0100)
committerMarcos Henrich <marcoshenrich@gmail.com>
Sat, 29 Aug 2015 11:24:02 +0000 (12:24 +0100)
[System] UriKind.RelativeOrAbsolute workaround.

1  2 
mcs/class/System/Test/System/UriTest.cs

index 1a261938e9c27227948d0bc9d15cb95daf461bbb,33484e5326d6ef031b9c9847ffcc11d7e073f185..beebf4dfc5b1b547974c42da95cc52ce84ca7126
@@@ -176,6 -176,10 +176,6 @@@ namespace MonoTests.Syste
  
                        uri = new Uri (new Uri("http://www.xxx.com"), "?x=0");
                        Assert.AreEqual ("http://www.xxx.com/?x=0", uri.ToString(), "#rel30");
 -#if !NET_4_0
 -                      uri = new Uri (new Uri("http://www.xxx.com/index.htm"), "?x=0");
 -                      Assert.AreEqual ("http://www.xxx.com/?x=0", uri.ToString(), "#rel31");
 -#endif
                        uri = new Uri (new Uri("http://www.xxx.com/index.htm"), "#here");
                        Assert.AreEqual ("http://www.xxx.com/index.htm#here", uri.ToString(), "#rel32");
  
                        Uri b = new Uri ("http://a/b/c/d;p?q");
                        Assert.AreEqual ("http://a/g", new Uri (b, "/g").ToString (), "#1");
                        Assert.AreEqual ("http://g/", new Uri (b, "//g").ToString (), "#2");
 -#if !NET_4_0
 -                      Assert.AreEqual ("http://a/b/c/?y", new Uri (b, "?y").ToString (), "#3");
 -#endif
                        Assert.IsTrue (new Uri (b, "#s").ToString ().EndsWith ("#s"), "#4");
  
                        Uri u = new Uri (b, "/g?q=r");
                        Assert.AreEqual ("c#", UriEx.UnescapeString ("file://localhost/c#", "c%23"), "#2");
                        Assert.AreEqual ("#", UriEx.UnescapeString ("http://localhost/c#", "%23"), "#1");
                        Assert.AreEqual ("c#", UriEx.UnescapeString ("http://localhost/c#", "c%23"), "#2");
 -#if NET_4_0
                        Assert.AreEqual ("%A9", UriEx.UnescapeString ("file://localhost/c#", "%A9"), "#3");
                        Assert.AreEqual ("%A9", UriEx.UnescapeString ("http://localhost/c#", "%A9"), "#3");
 -#else
 -                      Assert.AreEqual ("\xA9", UriEx.UnescapeString ("file://localhost/c#", "%A9"), "#3");
 -                      Assert.AreEqual ("\xA9", UriEx.UnescapeString ("http://localhost/c#", "%A9"), "#3");
 -#endif
                }
  
                [Test]
                        // 2-byte escape sequence, 2 individual characters
                        uri = new Uri ("file:///foo/a%C2%F8b", true);
                        path = uri.LocalPath;
 -#if NET_4_0
                        Assert.AreEqual ("/foo/a%C2%F8b", path, "#7");
 -#else
 -                      Assert.AreEqual (9, path.Length, "#7");
 -                      Assert.AreEqual (0xC2, path [6], "#8");
 -                      Assert.AreEqual (0xF8, path [7], "#9");
 -#endif
                }
  
                [Test]
                        Assert.AreEqual (
                                "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
                                Uri.EscapeDataString (sb.ToString ()));
 -#elif NET_4_0
 -                      Assert.AreEqual (
 -                              "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
 -                              Uri.EscapeDataString (sb.ToString ()));
  #else
                        Assert.AreEqual (
                                "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
                        Assert.AreEqual (
                                "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
                                Uri.EscapeUriString (sb.ToString ()));
 -#elif NET_4_0
 -                      Assert.AreEqual (
 -                              "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
 -                              Uri.EscapeUriString (sb.ToString ()));
  #else
                        Assert.AreEqual (
                                "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F",
                        Assert.AreEqual ("id=1%262&sort=asc", escaped, "UriEscaped");
                }
  
+               // When used, paths such as "/foo" are assumed relative.
+               static UriKind DotNetRelativeOrAbsolute = (Type.GetType ("Mono.Runtime") == null)? UriKind.RelativeOrAbsolute : (UriKind) 300;
+               [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);
+               }
                [Test]
                // Bug #12631
                public void LocalPathWithBaseUrl ()