Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Ruiz Garcia <pablo.ruiz@gmail.com>2012-10-13 03:23:47 +0400
committerPablo Ruiz Garcia <pablo.ruiz@gmail.com>2012-10-13 03:23:47 +0400
commitfe994000959e3874651f6bf193d152b589ab35ba (patch)
treec4d7d0dbf9bfa24af315d27b6a61a070bca2e373 /mcs/class/WindowsBase
parent7427d7df268ac6d5a09dc7c24bbc3096a19ecc49 (diff)
Fix implementation of System.IO.Packaging::GetRelativeUri(Uri,Uri) [fixes xamarin's bug #2727].
Diffstat (limited to 'mcs/class/WindowsBase')
-rw-r--r--mcs/class/WindowsBase/System.IO.Packaging/Check.cs6
-rw-r--r--mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs10
-rw-r--r--mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs17
3 files changed, 29 insertions, 4 deletions
diff --git a/mcs/class/WindowsBase/System.IO.Packaging/Check.cs b/mcs/class/WindowsBase/System.IO.Packaging/Check.cs
index cf31ec08111..53fd8b7152e 100644
--- a/mcs/class/WindowsBase/System.IO.Packaging/Check.cs
+++ b/mcs/class/WindowsBase/System.IO.Packaging/Check.cs
@@ -135,6 +135,12 @@ namespace System.IO.Packaging
{
NotNull(sourcePartUri, "sourcePartUri");
}
+
+ public static void TargetPartUri (Uri targetPartUri)
+ {
+ NotNull(targetPartUri, "targetPartUri");
+ }
+
public static void SourceUri (Uri sourceUri)
{
if (sourceUri == null)
diff --git a/mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs b/mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs
index c3a558756c5..37b805a18a7 100644
--- a/mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs
+++ b/mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs
@@ -139,10 +139,14 @@ namespace System.IO.Packaging {
public static Uri GetRelativeUri (Uri sourcePartUri, Uri targetPartUri)
{
- //Check.SourcePartUri (sourcePartUri);
- //Check.TargetPartUri (targetPartUri);
+ Check.SourcePartUri (sourcePartUri);
+ Check.TargetPartUri (targetPartUri);
+
+ Uri uri = new Uri ("http://fake.com");
+ Uri a = new Uri (uri, sourcePartUri.AbsolutePath);
+ Uri b = new Uri (uri, targetPartUri.AbsolutePath);
- return sourcePartUri;
+ return a.MakeRelativeUri(b);
}
public static Uri GetSourcePartUriFromRelationshipPartUri (Uri relationshipPartUri)
diff --git a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs
index 22068313f86..04494fff118 100644
--- a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs
+++ b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs
@@ -230,6 +230,21 @@ namespace System.IO.Packaging.Tests {
dest = new Uri ("/1/2/", UriKind.Relative);
Assert.AreEqual (new Uri ("", UriKind.Relative), PackUriHelper.GetRelativeUri (src, src), "#4");
+
+ // See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.getrelativeuri.aspx
+
+ src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+ dest = new Uri("/mydoc/markup/picture.jpg", UriKind.Relative);
+ Assert.AreEqual (new Uri ("picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#5");
+
+ src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+ dest = new Uri("/mydoc/picture.jpg", UriKind.Relative);
+ Assert.AreEqual (new Uri ("../picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#6");
+
+ src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+ dest = new Uri("/mydoc/images/picture.jpg", UriKind.Relative);
+ Assert.AreEqual (new Uri ("../images/picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#7");
+
}
[Test]
@@ -299,4 +314,4 @@ namespace System.IO.Packaging.Tests {
Assert.AreEqual ("/word/document.xml", result.ToString(), "#2");
}
}
-} \ No newline at end of file
+}