2006-08-21 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Mon, 21 Aug 2006 14:32:53 +0000 (14:32 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Mon, 21 Aug 2006 14:32:53 +0000 (14:32 -0000)
* FileIOPermissionTest.cs: Added new test cases for union (#79118) and
subpath handling.

svn path=/trunk/mcs/; revision=64146

mcs/class/corlib/Test/System.Security.Permissions/ChangeLog
mcs/class/corlib/Test/System.Security.Permissions/FileIOPermissionTest.cs

index 8e09448c5fa6c34f33ec53df052e77f0153a8af9..1065cc85b5654db6ba2d33df62b6b0865fb8752c 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-21  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * FileIOPermissionTest.cs: Added new test cases for union (#79118) and
+       subpath handling.
+
 2006-04-07  Sebastien Pouliot  <sebastien@ximian.com>
 
        * FileIOPermissionTest.cs: Adjust test cases for wildcards (like *) 
index 4058a564cb7e8202e2d41fdf6b062485d38972ca..4f26004f108172001f41cdea6d9dfb302efdbceb 100644 (file)
@@ -335,6 +335,54 @@ namespace MonoTests.System.Security.Permissions {
                        Assert("Path list should have 2 for Read", pathsInPermission.Length == pathArrayGood.Length);\r
                        pathsInPermission = union.GetPathList(FileIOPermissionAccess.Append);\r
                        Assert("Path list should have 3 for Append", pathsInPermission.Length == pathArrayGood2.Length);\r
+               }
+
+               [Test]
+               public void Union_Bug79118 ()
+               {
+                       string[] f1 = unix ? new string[] { "/tmp/one", "/tmp/two" } : new string[] { "c:\\temp\\one", "c:\\temp\\two" };
+                       string[] f2 = unix ? new string[] { "/tmp/two" } : new string[] { "c:\\temp\\two" };
+
+                       p = new FileIOPermission (FileIOPermissionAccess.Read, f1);
+                       p2 = new FileIOPermission (FileIOPermissionAccess.Read, f2);
+                       FileIOPermission union = (FileIOPermission) p.Union (p2);
+
+                       string[] paths = union.GetPathList(FileIOPermissionAccess.Read);
+                       AssertEquals ("Length", 2, paths.Length);
+                       AssertEquals ("0", f1[0], paths[0]);
+                       AssertEquals ("1", f1[1], paths[1]);
+               }
+
+               private void Partial (string msg, string[] path1, string[] path2, int expected)
+               {
+                       p = new FileIOPermission (FileIOPermissionAccess.Read, path1);
+                       p2 = new FileIOPermission (FileIOPermissionAccess.Read, path2);
+                       FileIOPermission union = (FileIOPermission) p.Union (p2);
+
+                       string[] paths = union.GetPathList(FileIOPermissionAccess.Read);
+                       AssertEquals (msg + ".Length", expected, paths.Length);
+                       AssertEquals (msg + "[0]", path1[0], paths[0]);
+                       if (expected > 1)
+                               AssertEquals (msg + "[1]", path2[0], paths[1]);
+               }\r
+\r
+               [Test]
+               public void Union_Partial ()
+               {
+                       string[] f1 = unix ? new string[] { "/dir/part" } : new string[] { "c:\\dir\\part" };
+                       string[] f2 = unix ? new string[] { "/dir/partial" } : new string[] { "c:\\dir\\partial" };
+                       Partial ("1", f1, f2, 2);
+                       Partial ("2", f2, f1, 2);
+
+                       f1 = unix ? new string[] { "/dir/part/" } : new string[] { "c:\\dir\\part\\" };
+                       f2 = unix ? new string[] { "/dir/partial/" } : new string[] { "c:\\dir\\partial\\" };\r
+                       Partial ("3", f1, f2, 2);\r
+                       Partial ("4", f2, f1, 2);
+
+                       f1 = unix ? new string[] { "/dir/part/ial" } : new string[] { "c:\\dir\\part\\ial" };
+                       f2 = unix ? new string[] { "/dir/part/ial" } : new string[] { "c:\\dir\\part\\ial" };\r
+                       Partial ("5", f1, f2, 1);
+                       Partial ("6", f2, f1, 1);
                }\r
 \r
                [Test]\r