예제 #1
0
        public void CanGetVolumePath()
        {
            VolumeMap map = CreateMapOfAllLocalVolumes();

            ulong          thisVolumeSerial;
            SafeFileHandle directoryHandle;

            FileUtilities.TryOpenDirectory(TemporaryDirectory, FileShare.ReadWrite | FileShare.Delete, out directoryHandle);
            using (directoryHandle)
            {
                XAssert.IsNotNull(directoryHandle, "Failed to open the TemporaryDirectory, which we just created");
                thisVolumeSerial = FileUtilities.GetVolumeSerialNumberByHandle(directoryHandle);
            }

            VolumeGuidPath volumePath = map.TryGetVolumePathBySerial(thisVolumeSerial);

            XAssert.IsTrue(volumePath.IsValid);

            var openResult = FileUtilities.TryOpenDirectory(volumePath.Path, FileShare.ReadWrite | FileShare.Delete, out directoryHandle);

            using (directoryHandle)
            {
                XAssert.IsTrue(openResult.Succeeded, "Failed to open the volume root (but we didn't ask for any access)");
                XAssert.IsTrue(openResult.OpenedOrTruncatedExistingFile);
                XAssert.IsNotNull(directoryHandle);
                XAssert.AreEqual(thisVolumeSerial, FileUtilities.GetVolumeSerialNumberByHandle(directoryHandle), "The volume root path has the wrong volume serial");
            }
        }
예제 #2
0
        public void CannotGetVolumePathForSerialThatDoesNotExist()
        {
            var   serials      = new HashSet <ulong>(FileUtilities.ListVolumeGuidPathsAndSerials().Select(t => t.Item2));
            ulong uniqueSerial = serials.First();

            do
            {
                uniqueSerial++;
            }while (serials.Contains(uniqueSerial));

            VolumeMap map = CreateMapOfAllLocalVolumes();

            XAssert.IsFalse(map.TryGetVolumePathBySerial(uniqueSerial).IsValid, "Found a path for a serial that seemed to not exist");
        }