3 using System.IO.Packaging;
6 namespace System.IO.Packaging.Tests
9 public class PackagePartFileTests
16 path = Path.GetTempFileName();
17 Package.Open(path, FileMode.Create).Close();
21 public void Teardown()
27 public void TestFileMode ()
29 Uri uri =new Uri("/somepart.xml", UriKind.Relative);
30 FileMode[] modes = { FileMode.Open, FileMode.OpenOrCreate, FileMode.Create };
31 using (Package package = Package.Open(path))
34 foreach (FileMode mode in modes)
36 part = package.CreatePart(uri, "application/xml");
37 part.GetStream(mode, FileAccess.Write);
38 package.DeletePart(uri);
41 part = package.CreatePart(uri, "application/xml");
42 foreach (FileMode mode in modes)
43 part.GetStream(mode, FileAccess.Write);
48 public void TestFileMode2()
50 Uri uri = new Uri("/somepart.xml", UriKind.Relative);
51 FileMode[] modes = { FileMode.Create, FileMode.CreateNew, FileMode.Truncate, FileMode.Append };
52 FileMode[] otherModes = { FileMode.Open, FileMode.OpenOrCreate };
54 using (Package package = Package.Open(path))
56 PackagePart part = package.CreatePart(uri, "application/xml");
57 foreach (FileMode mode in modes)
61 part.GetStream(mode, FileAccess.Read);
62 throw new Exception (string.Format ("Should not be able to open with: {0}", mode));
66 // This should be thrown
70 foreach (FileMode mode in otherModes)
72 Stream s = part.GetStream(mode, FileAccess.Read);
73 Assert.IsTrue(s.CanRead);
74 Assert.IsFalse(s.CanWrite);
80 [ExpectedException(typeof(ArgumentException))]
81 public void CreateNewPackagePart()
83 using (Package package = Package.Open(path))
85 PackagePart part = package.CreatePart(new Uri("/somepart.xml", UriKind.Relative), "application/xml");
86 // CreateNew is not supported
87 part.GetStream(FileMode.CreateNew, FileAccess.Write);
92 [ExpectedException(typeof(ArgumentException))]
93 public void TruncatePackagePart()
95 using (Package package = Package.Open(path))
97 PackagePart part = package.CreatePart(new Uri("/somepart.xml", UriKind.Relative), "application/xml");
98 // CreateNew is not supported
99 part.GetStream(FileMode.Truncate, FileAccess.Write);
104 [ExpectedException(typeof(ArgumentException))]
105 public void AppendPackagePart()
107 using (Package package = Package.Open(path))
109 PackagePart part = package.CreatePart(new Uri("/somepart.xml", UriKind.Relative), "application/xml");
110 // CreateNew is not supported
111 part.GetStream(FileMode.Append, FileAccess.Write);
116 public void TestOverwrite()
118 using (Package package = Package.Open(path))
120 PackagePart part = package.CreatePart(new Uri("/Uri.xml", UriKind.Relative), "content/type");
121 Stream s = part.GetStream(FileMode.OpenOrCreate, FileAccess.Write);
122 StreamWriter sw = new StreamWriter(s);
123 sw.Write("<test>aaaaaaa</test>");
126 Stream s5 = part.GetStream(FileMode.Create, FileAccess.ReadWrite);
127 StreamWriter sw2 = new StreamWriter(s5);
128 sw2.Write("<test>bbb</test>");
131 // Verify that the part got overwritten correctly.
132 Stream s6 = part.GetStream();
133 StreamReader sr = new StreamReader(s6);
134 Assert.AreEqual("<test>bbb</test>", sr.ReadToEnd());