You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			240 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| // Permission is hereby granted, free of charge, to any person obtaining
 | |
| // a copy of this software and associated documentation files (the
 | |
| // "Software"), to deal in the Software without restriction, including
 | |
| // without limitation the rights to use, copy, modify, merge, publish,
 | |
| // distribute, sublicense, and/or sell copies of the Software, and to
 | |
| // permit persons to whom the Software is furnished to do so, subject to
 | |
| // the following conditions:
 | |
| // 
 | |
| // The above copyright notice and this permission notice shall be
 | |
| // included in all copies or substantial portions of the Software.
 | |
| // 
 | |
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
| // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
| // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
| // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | |
| // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | |
| // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | |
| // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | |
| //
 | |
| // Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
 | |
| //
 | |
| // Authors:
 | |
| //    Alan McGovern (amcgovern@novell.com)
 | |
| //
 | |
| 
 | |
| using System;
 | |
| using System.Linq;
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using System.IO.Packaging;
 | |
| using System.Xml;
 | |
| using NUnit.Framework;
 | |
| 
 | |
| namespace MonoTests.System.IO.Packaging {
 | |
| 
 | |
|     [TestFixture]
 | |
|     public class FakePackagePartTests : TestBase {
 | |
| 
 | |
|         static void Main (string [] args)
 | |
|         {
 | |
|             FakePackagePartTests t = new FakePackagePartTests ();
 | |
|             t.FixtureSetup ();
 | |
|             t.Setup ();
 | |
|             t.GetStream2 ();
 | |
|         }
 | |
| 
 | |
|         FakePackagePart part;
 | |
|         public override void Setup ()
 | |
|         {
 | |
|             base.Setup ();
 | |
|             part = (FakePackagePart) new FakePackagePart(package, uris [0], contentType);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void Constructor1 ()
 | |
|         {
 | |
|             FakePackagePart p = new FakePackagePart (null, null);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void Constructor2 ()
 | |
|         {
 | |
|             FakePackagePart p = new FakePackagePart (package, null);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void Constructor3 ()
 | |
|         {
 | |
|             FakePackagePart p = new FakePackagePart (null, uris [0]);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void Constructor4 ()
 | |
|         {
 | |
|             new FakePackagePart (package, uris [0], null);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void Constructor5 ()
 | |
|         {
 | |
|             new FakePackagePart (package, uris [0], "");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentException))]
 | |
|         public void Constructor6 ()
 | |
|         {
 | |
|             new FakePackagePart (package, uris [0], "dgsdgdfgd");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void CreateRelationship1 ()
 | |
|         {
 | |
|             part.CreateRelationship (null, TargetMode.External, null);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void CreateRelationship2 ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, null);
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentException))]
 | |
|         public void CreateRelationship3a ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentException))]
 | |
|         public void CreateRelationship3b ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "    ");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void CreateRelationship4 ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah");
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [Test]
 | |
|         public void CreateRelationship5 ()
 | |
|         {
 | |
|             PackageRelationship r = part.CreateRelationship (uris [1], TargetMode.External, "blah", null);
 | |
|             Assert.IsNotNull (r.Id, "#1");
 | |
|             Assert.AreEqual (part.Uri, r.SourceUri, "#2");
 | |
|             Assert.AreEqual (uris [1], r.TargetUri, "#3");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (ArgumentNullException))]
 | |
|         public void CreateRelationship6 ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah", "");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void CreateRelationship7 ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (XmlException))]
 | |
|         public void CreateDupeRelationship ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException (typeof (XmlException))]
 | |
|         public void CreateDupeRelationshipId ()
 | |
|         {
 | |
|             part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
 | |
|             part.CreateRelationship (uris [2], TargetMode.Internal, "aaa", "asda");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void EnumeratePartsBreak ()
 | |
|         {
 | |
|             FakePackage package = new FakePackage (FileAccess.ReadWrite, false);
 | |
| 
 | |
|             package.CreatePart (uris [0], "a/a");
 | |
|             package.CreatePart (uris [1], "a/a");
 | |
|             package.CreatePart (uris [2], "a/a");
 | |
| 
 | |
|             Assert.IsTrue (package.GetParts () == package.GetParts (), "#1");
 | |
|             try {
 | |
|                 foreach (PackagePart part in package.GetParts ())
 | |
|                     package.DeletePart (part.Uri);
 | |
|                 Assert.Fail ("This should throw an exception");
 | |
|             } catch {
 | |
|             }
 | |
| 
 | |
|             PackagePartCollection c = package.GetParts ();
 | |
|             package.CreatePart (new Uri ("/dfds", UriKind.Relative), "a/a");
 | |
|             int count = 0;
 | |
|             foreach (PackagePart p in c) { count++; }
 | |
|             Assert.AreEqual (3, count, "Three added, one deleted, one added");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void GetStream1 ()
 | |
|         {
 | |
|             part.GetStream ();
 | |
|             Assert.AreEqual (FileMode.OpenOrCreate, part.Modes [0], "#1");
 | |
|             Assert.AreEqual (package.FileOpenAccess, part.Accesses [0], "#2");
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         [ExpectedException(typeof(NotSupportedException))]
 | |
|         public void PackagePartNoContentType ()
 | |
|         {
 | |
|             string s = new FakePackagePart (package, uris [0]).ContentType;
 | |
|         }
 | |
| 
 | |
|         [Test]
 | |
|         public void GetStream2 ()
 | |
|         {
 | |
|             Assert.IsNotNull (package.CreatePart (uris[1], contentType));
 | |
|             Assert.AreEqual (1, new List<PackagePart> (package.GetParts()).Count, "#0a");
 | |
|             package.Flush ();
 | |
| 			package.Close ();
 | |
| 
 | |
|             using (Package p = Package.Open (new MemoryStream (stream.ToArray ()))) {
 | |
| 				PackagePart part = new List<PackagePart>(p.GetParts ())[0];
 | |
|                 Stream s = part.GetStream ();
 | |
|                 Assert.IsTrue (s.CanRead, "#1");
 | |
|                 Assert.IsTrue (s.CanSeek, "#2");
 | |
|                 Assert.IsFalse (s.CanWrite, "#3");
 | |
|             }
 | |
| 			
 | |
|             using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate)) {
 | |
|                 PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
 | |
|                 Stream s = part.GetStream ();
 | |
|                 Assert.IsTrue (s.CanRead, "#4");
 | |
|                 Assert.IsTrue (s.CanSeek, "#5");
 | |
|                 Assert.IsTrue (s.CanWrite, "#6");
 | |
|             }
 | |
| 
 | |
|             using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
 | |
|                 PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
 | |
|                 Stream s = part.GetStream ();
 | |
|                 Assert.IsTrue (s.CanRead, "#7");
 | |
|                 Assert.IsTrue (s.CanSeek, "#8");
 | |
|                 Assert.IsTrue (s.CanWrite, "#9");
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |