GetPathList() public method

public GetPathList ( FileIOPermissionAccess access ) : string[]
access FileIOPermissionAccess
return string[]
        public override IPermission Union(IPermission other)
        {
            FileIOPermission fiop = Cast(other);

            if (fiop == null)
            {
                return(Copy());
            }

            if (IsUnrestricted() || fiop.IsUnrestricted())
            {
                return(new FileIOPermission(PermissionState.Unrestricted));
            }

            if (IsEmpty() && fiop.IsEmpty())
            {
                return(null);
            }

            FileIOPermission result = (FileIOPermission)Copy();

            result.AllFiles      |= fiop.AllFiles;
            result.AllLocalFiles |= fiop.AllLocalFiles;

            string[] paths = fiop.GetPathList(FileIOPermissionAccess.Read);
            if (paths != null)
            {
                UnionKeys(result.readList, paths);
            }

            paths = fiop.GetPathList(FileIOPermissionAccess.Write);
            if (paths != null)
            {
                UnionKeys(result.writeList, paths);
            }

            paths = fiop.GetPathList(FileIOPermissionAccess.Append);
            if (paths != null)
            {
                UnionKeys(result.appendList, paths);
            }

            paths = fiop.GetPathList(FileIOPermissionAccess.PathDiscovery);
            if (paths != null)
            {
                UnionKeys(result.pathList, paths);
            }

            return(result);
        }
        /// <summary>Creates a permission that is the union of the current permission and the specified permission.</summary>
        /// <returns>A new permission that represents the union of the current permission and the specified permission.</returns>
        /// <param name="other">A permission to combine with the current permission. It must be the same type as the current permission. </param>
        /// <exception cref="T:System.ArgumentException">The <paramref name="other" /> parameter is not null and is not of the same type as the current permission. </exception>
        public override IPermission Union(IPermission other)
        {
            FileIOPermission fileIOPermission = FileIOPermission.Cast(other);

            if (fileIOPermission == null)
            {
                return(this.Copy());
            }
            if (this.IsUnrestricted() || fileIOPermission.IsUnrestricted())
            {
                return(new FileIOPermission(PermissionState.Unrestricted));
            }
            if (this.IsEmpty() && fileIOPermission.IsEmpty())
            {
                return(null);
            }
            FileIOPermission fileIOPermission2 = (FileIOPermission)this.Copy();

            fileIOPermission2.AllFiles      |= fileIOPermission.AllFiles;
            fileIOPermission2.AllLocalFiles |= fileIOPermission.AllLocalFiles;
            string[] array = fileIOPermission.GetPathList(FileIOPermissionAccess.Read);
            if (array != null)
            {
                FileIOPermission.UnionKeys(fileIOPermission2.readList, array);
            }
            array = fileIOPermission.GetPathList(FileIOPermissionAccess.Write);
            if (array != null)
            {
                FileIOPermission.UnionKeys(fileIOPermission2.writeList, array);
            }
            array = fileIOPermission.GetPathList(FileIOPermissionAccess.Append);
            if (array != null)
            {
                FileIOPermission.UnionKeys(fileIOPermission2.appendList, array);
            }
            array = fileIOPermission.GetPathList(FileIOPermissionAccess.PathDiscovery);
            if (array != null)
            {
                FileIOPermission.UnionKeys(fileIOPermission2.pathList, array);
            }
            return(fileIOPermission2);
        }
		public void ShortToLong () 
		{
			// on windows this returns a "short" (8.3) path and filename
			string filename = Path.GetTempFileName ();
			p = new FileIOPermission(FileIOPermissionAccess.Read, filename);
			string[] files = p.GetPathList (FileIOPermissionAccess.Read);
			Assert.AreEqual (1, files.Length, "GetPathList.Count");
			// FIXME: here GetTempFileName != GetPathList[0] for MS but == for Mono
			Assert.AreEqual (Path.GetFileName (filename), Path.GetFileName (files [0]), "Path.GetFileName(GetTempFileName)==Path.GetFileName(GetPathList[0])");
			// note: this will fail on Linux as kernel32.dll isn't available
			Assert.AreEqual (FilePathUtil.GetLongPathName (filename), files [0], "GetLongPathName(GetTempFileName)==GetPathList[0]");
		}
		public void FromXML ()
		{
			p = new FileIOPermission(PermissionState.None);
			SecurityElement esd = new SecurityElement("IPermission");
			esd.AddAttribute("class", "FileIOPermission");
			esd.AddAttribute("version", "1");
			esd.AddAttribute("Unrestricted", "true");
			p.FromXml(esd);
			Assert.IsTrue(p.IsUnrestricted(), "Should get an unrestricted permission");

			esd = new SecurityElement("IPermission");
			esd.AddAttribute("class", "FileIOPermission");
			esd.AddAttribute("version", "1");
			// FIXME: Adjust to run on Mac OS's
			if (Path.VolumeSeparatorChar == ':') {
				esd.AddAttribute("Read", "c:\\temp;d:\\temp2");
				esd.AddAttribute("Write", "c:\\temp;d:\\temp2;z:\\temp3");
			}
			else {
				esd.AddAttribute("Read", "/temp;/usr/temp2");
				esd.AddAttribute("Write", "/temp;/usr/temp2;/usr/bin/temp3");
			}
			p = new FileIOPermission(PermissionState.None);
			p.FromXml(esd);
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Read);
			Assert.IsTrue(pathsInPermission.Length == 2, "Path list should have 2 for Read");
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Write);
			Assert.IsTrue(pathsInPermission.Length == 3, "Path list should have 2 for Write");
		}
		public void AddPathListStringArray ()
		{
			p = new FileIOPermission(FileIOPermissionAccess.Read, pathArrayGood);
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Read);
			Assert.IsTrue (pathsInPermission.Length == 2, "Does not contain correct number of paths. Expected 2 but got: "+pathsInPermission.Length);
			foreach (string s in pathsInPermission){
				Assert.IsTrue (Array.IndexOf(pathsInPermission, s) >=0, "Unexpected path in the Permission: " + s);
			}

			p.AddPathList(FileIOPermissionAccess.Append, pathArrayGood);
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Read);
			Assert.IsTrue (pathsInPermission.Length == 2, "Should still contain correct number Read paths. Expected 2 but got: "+pathsInPermission.Length);
			foreach (string s in pathsInPermission){
				Assert.IsTrue (Array.IndexOf(pathsInPermission, s) >=0, "Unexpected path in the Permission: " + s);
			}
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Append);
			Assert.IsTrue (pathsInPermission.Length == 2, "Should contain correct number of Append paths. Expected 2 but got: "+pathsInPermission.Length);
			foreach (string s in pathsInPermission){
				Assert.IsTrue (Array.IndexOf(pathsInPermission, s) >=0, "Unexpected path in the Permission: " + s);
			}
		}
		public void ConstructorString ()
		{
			string pathToAdd;
			// FIXME: Adjust to run on Mac OS's
			if (Path.VolumeSeparatorChar == ':')
				pathToAdd = "c:\\temp";
			else
				pathToAdd = "/temp";

			p = new FileIOPermission(FileIOPermissionAccess.Read, pathToAdd);
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Read);
			Assert.IsTrue (pathsInPermission.Length == 1, "Does not contain correct number of paths. Expected 1 but got: "+pathsInPermission.Length);
			Assert.IsTrue(pathsInPermission[0] == pathToAdd, "Does not contain expected path from constructor: "+pathToAdd);
		}
		public void ConstructorStringArray () 
		{
			p = new FileIOPermission(FileIOPermissionAccess.Read, pathArrayGood);
			pathsInPermission = p.GetPathList(FileIOPermissionAccess.Read);
			Assert("Does not contain correct number of paths. Expected 2 but got: "+pathsInPermission.Length, pathsInPermission.Length == 2);
			foreach (string s in pathsInPermission){
				Assert("Unexpected path in the Permission: " + s, Array.IndexOf(pathsInPermission, s) >=0);
			}
		}