Jo Shields 181b81b4a4 Imported Upstream version 3.12.0
Former-commit-id: cf92446697332992ec36726e78eb8703e1f259d7
2015-01-13 10:44:36 +00:00

347 lines
14 KiB
C#

// PackUriHelperTests.cs created with MonoDevelop
// User: alan at 13:39 28/10/2008
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//
using System;
using System.IO.Packaging;
using NUnit.Framework;
namespace MonoTests.System.IO.Packaging {
[TestFixture]
public class PackUriHelperTests {
Uri a {
get { return PackUriHelper.Create (new Uri ("http://www.test.com/pack1.pkg")); }
}
Uri b {
get { return PackUriHelper.Create (new Uri ("http://www.test.com/pack2.pkg")); }
}
Uri part1 = new Uri ("/file1", UriKind.Relative);
Uri part2 = new Uri ("/file2", UriKind.Relative);
Uri main = new Uri ("/main.html", UriKind.Relative);
[Test]
public void ComparePackUriTest ()
{
Assert.AreEqual (0, PackUriHelper.ComparePackUri (null, null), "#1");
Assert.IsTrue (PackUriHelper.ComparePackUri (a, null) > 0, "#2");
Assert.AreEqual (0, PackUriHelper.ComparePackUri (a, a), "#3");
Assert.IsTrue (PackUriHelper.ComparePackUri (a, b) < 0, "#4");
}
[Test]
[Category("NotWorking")]
[ExpectedException(typeof(UriFormatException))]
public void CompareInvalidTest ()
{
Uri a = new Uri ("pack://url1");
PackUriHelper.ComparePackUri (a, a);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void NonPackUriCompareTest ()
{
PackUriHelper.ComparePackUri (new Uri ("http://wtest.com"), a);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void NonPackUriCompareRelativeTest ()
{
PackUriHelper.ComparePackUri (new Uri ("wtest.com", UriKind.Relative), a);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void InvalidPartUriCompareTest ()
{
PackUriHelper.ComparePartUri (a, b);
}
[Test]
public void PartUriCompareTest ()
{
Assert.AreEqual (0, PackUriHelper.ComparePartUri (null, null), "#1");
Assert.IsTrue (PackUriHelper.ComparePartUri (part1, null) > 0, "#2");
Assert.IsTrue (PackUriHelper.ComparePartUri (part1, part2) < 0, "#3");
}
[Test]
public void CreateTest ()
{
Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg")).ToString (), "#1");
Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), null, null).ToString (), "#2");
Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
}
[Test]
public void CreateTest2()
{
Uri uri = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
Assert.AreEqual("pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/", PackUriHelper.Create(uri).ToString());
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void CreateInvalidTest ()
{
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "notfrag");
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void CreateInvalidTest2 ()
{
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void CreateInvalidTest3 ()
{
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
}
[Test]
public void CreateInvalidTest4 ()
{
PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative));
}
[Test]
public void CreatePartUri ()
{
Assert.IsFalse (PackUriHelper.CreatePartUri (part1).IsAbsoluteUri, "#1");
Assert.AreEqual (new Uri (part1.ToString (), UriKind.Relative), PackUriHelper.CreatePartUri (part1), "#2");
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void CreatePartUri2 ()
{
PackUriHelper.CreatePartUri (null);
}
[Test]
public void GetNormalizedPartUriTest ()
{
Uri uri = new Uri ("/test.com".ToUpperInvariant (), UriKind.Relative);
Assert.IsTrue (uri == PackUriHelper.GetNormalizedPartUri (uri));
}
[Test]
public void GetNormalisedPartUritest4 ()
{
PackUriHelper.GetNormalizedPartUri (part1);
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void GetNormalizedPartUriTest2 ()
{
PackUriHelper.GetNormalizedPartUri (null);
}
[Test]
[ExpectedException (typeof (UriFormatException))]
public void GetNormalizedPartUriTest3 ()
{
Assert.AreEqual (new Uri (a.ToString ().ToUpperInvariant (), UriKind.Relative), PackUriHelper.GetNormalizedPartUri (a));
}
[Test]
public void GetPackageUriTest ()
{
Assert.AreEqual (a, PackUriHelper.GetPackageUri (PackUriHelper.Create (a, new Uri ("/test.html", UriKind.Relative))));
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void GetPackageUri2 ()
{
PackUriHelper.GetPackageUri (null);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void GetPackageUri3 ()
{
PackUriHelper.GetPackageUri (part1);
}
[Test]
public void GetPartUriTest ()
{
var pack = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
var part = new Uri("/main.html", UriKind.Relative);
var pack_part = new Uri(@"pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/main.html");
Assert.IsNull(PackUriHelper.GetPartUri(pack), "#1");
Assert.AreEqual(pack_part, PackUriHelper.Create(pack, part), "#2");
Assert.AreEqual(part, PackUriHelper.GetPartUri(PackUriHelper.Create(pack, part)), "#3");
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void GetPartUriTest2 ()
{
PackUriHelper.GetPartUri (null);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void GetPartUriTest3 ()
{
PackUriHelper.GetPartUri (part1);
}
[Test]
public void GetRelationshipPartUriTest ()
{
Assert.AreEqual ("/_rels/file1.rels", PackUriHelper.GetRelationshipPartUri (part1).ToString());
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void GetRelationshipPartUriTest2 ()
{
PackUriHelper.GetRelationshipPartUri (null);
}
[Test]
public void GetRelativeUriTest ()
{
Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
Uri dest = new Uri ("/file2.png", UriKind.Relative);
Assert.AreEqual (new Uri ("../../../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#1");
dest = new Uri ("/1/2", UriKind.Relative);
Assert.AreEqual (new Uri ("../../2", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#2");
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]
[ExpectedException (typeof(ArgumentException))]
public void GetRelativeUriTest2 ()
{
Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
Uri dest = new Uri ("/1/2/", UriKind.Relative);
Assert.AreEqual (new Uri ("../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#3");
}
[Test]
public void IsRelationshipPartUriTest ()
{
Assert.IsFalse (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever", UriKind.Relative)));
Assert.IsTrue (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever.rels", UriKind.Relative)));
}
[Test]
public void IsRelationshipPartUriTest2 ()
{
Uri uri = new Uri ("/test/uri", UriKind.Relative);
PackUriHelper.IsRelationshipPartUri (uri);
}
[Test]
[ExpectedException(typeof(UriFormatException))]
public void ResolvePartUri ()
{
Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
Uri dest = new Uri ("/MyFile", UriKind.Relative);
// Can't be empty url
Assert.AreEqual (new Uri (""), PackUriHelper.ResolvePartUri (src, dest), "#1");
}
[Test]
//[ExpectedException (typeof (UriFormatException))]
public void ResolvePartUri2 ()
{
Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
Uri dest = new Uri ("/1/2/MyFile", UriKind.Relative);
// Can't be empty url
Assert.AreEqual (new Uri ("/1/2/MyFile", UriKind.Relative), PackUriHelper.ResolvePartUri (src, dest), "#1");
Assert.AreEqual (new Uri ("/1/2/3/4", UriKind.Relative), PackUriHelper.ResolvePartUri (dest, src), "#1");
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void ResolvePartUri3 ()
{
Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
Uri dest = new Uri ("http://www.example.com", UriKind.Absolute);
PackUriHelper.ResolvePartUri (src, dest);
}
[Test]
public void ResolvePartUri4 ()
{
Uri src = new Uri ("/", UriKind.Relative);
Uri dest = new Uri ("word/document.xml", UriKind.Relative);
Uri result = PackUriHelper.ResolvePartUri (src, dest);
Assert.IsFalse(result.IsAbsoluteUri, "#1");
Assert.AreEqual ("/word/document.xml", result.ToString(), "#2");
// See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.resolveparturi.aspx
src = new Uri ("/mydoc/markup/page.xml", UriKind.Relative);
dest = new Uri("picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#3");
dest = new Uri("images/picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/mydoc/markup/images/picture.jpg", result.ToString(), "#4");
dest = new Uri("./picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#5");
dest = new Uri("../picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/mydoc/picture.jpg", result.ToString(), "#6");
dest = new Uri("../images/picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/mydoc/images/picture.jpg", result.ToString(), "#7");
src = new Uri ("/", UriKind.Relative);
dest = new Uri("images/picture.jpg", UriKind.Relative);
result = PackUriHelper.ResolvePartUri (src, dest);
Assert.AreEqual ("/images/picture.jpg", result.ToString(), "#8");
}
}
}