public void DeleteFile()
        {
            using (MockVirtualizationInstance mockVirtualization = new MockVirtualizationInstance())
                using (LinuxFileSystemVirtualizer virtualizer = new LinuxFileSystemVirtualizer(this.Repo.Context, this.Repo.GitObjects, mockVirtualization))
                {
                    const string        DeleteTestFileName = "deleteMe.txt";
                    UpdateFailureReason failureReason      = UpdateFailureReason.NoFailure;

                    mockVirtualization.DeleteFileResult             = Result.Success;
                    mockVirtualization.DeleteFileUpdateFailureCause = UpdateFailureCause.NoFailure;
                    virtualizer
                    .DeleteFile(DeleteTestFileName, UpdatePlaceholderType.AllowReadOnly, out failureReason)
                    .ShouldEqual(new FileSystemResult(FSResult.Ok, (int)mockVirtualization.DeleteFileResult));
                    failureReason.ShouldEqual((UpdateFailureReason)mockVirtualization.DeleteFileUpdateFailureCause);

                    mockVirtualization.DeleteFileResult             = Result.EFileNotFound;
                    mockVirtualization.DeleteFileUpdateFailureCause = UpdateFailureCause.NoFailure;
                    virtualizer
                    .DeleteFile(DeleteTestFileName, UpdatePlaceholderType.AllowReadOnly, out failureReason)
                    .ShouldEqual(new FileSystemResult(FSResult.FileOrPathNotFound, (int)mockVirtualization.DeleteFileResult));
                    failureReason.ShouldEqual((UpdateFailureReason)mockVirtualization.DeleteFileUpdateFailureCause);

                    // TODO: What will the result be when the UpdateFailureCause is DirtyData
                    mockVirtualization.DeleteFileResult = Result.EInvalidOperation;

                    // TODO: The result should probably be VirtualizationInvalidOperation but for now it's IOError
                    mockVirtualization.DeleteFileUpdateFailureCause = UpdateFailureCause.DirtyData;
                    virtualizer
                    .DeleteFile(DeleteTestFileName, UpdatePlaceholderType.AllowReadOnly, out failureReason)
                    .ShouldEqual(new FileSystemResult(FSResult.IOError, (int)mockVirtualization.DeleteFileResult));
                    failureReason.ShouldEqual((UpdateFailureReason)mockVirtualization.DeleteFileUpdateFailureCause);
                }
        }
 public void ClearNegativePathCacheIsNoOp()
 {
     using (MockVirtualizationInstance mockVirtualization = new MockVirtualizationInstance())
         using (LinuxFileSystemVirtualizer virtualizer = new LinuxFileSystemVirtualizer(this.Repo.Context, this.Repo.GitObjects, mockVirtualization))
         {
             uint totalEntryCount = 0;
             virtualizer.ClearNegativePathCache(out totalEntryCount).ShouldEqual(new FileSystemResult(FSResult.Ok, (int)Result.Success));
             totalEntryCount.ShouldEqual(0U);
         }
 }
 public void ResultToFSResultMapsHResults()
 {
     foreach (Result result in Enum.GetValues(typeof(Result)))
     {
         if (MappedResults.ContainsKey(result))
         {
             LinuxFileSystemVirtualizer.ResultToFSResult(result).ShouldEqual(MappedResults[result]);
         }
         else
         {
             LinuxFileSystemVirtualizer.ResultToFSResult(result).ShouldEqual(FSResult.IOError);
         }
     }
 }
 protected override FileSystemVirtualizer CreateVirtualizer(CommonRepoSetup repo)
 {
     this.MockVirtualization = new MockVirtualizationInstance();
     this.LinuxVirtualizer   = new LinuxFileSystemVirtualizer(repo.Context, repo.GitObjects, this.MockVirtualization);
     return(this.LinuxVirtualizer);
 }