public virtual void TestDeleteOnExitFNF()
        {
            FileSystem mockFs = Org.Mockito.Mockito.Mock <FileSystem>();
            FileSystem fs     = new FilterFileSystem(mockFs);
            Path       path   = new Path("/a");

            // don't delete on close if path doesn't exist
            NUnit.Framework.Assert.IsFalse(fs.DeleteOnExit(path));
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Org.Mockito.Mockito.Reset(mockFs);
            fs.Close();
            Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).GetFileStatus(Eq(
                                                                                              path));
            Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Any <Path>(
                                                                                       ), AnyBoolean());
        }
        public virtual void TestDeleteOnExitRemoved()
        {
            FileSystem mockFs = Org.Mockito.Mockito.Mock <FileSystem>();
            FileSystem fs     = new FilterFileSystem(mockFs);
            Path       path   = new Path("/a");

            // don't delete on close if path existed, but later removed
            Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(path))).ThenReturn(new FileStatus
                                                                                    ());
            Assert.True(fs.DeleteOnExit(path));
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Org.Mockito.Mockito.Reset(mockFs);
            fs.Close();
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Any <Path>(
                                                                                       ), AnyBoolean());
        }
        public virtual void TestDeleteOnExit()
        {
            FileSystem mockFs = Org.Mockito.Mockito.Mock <FileSystem>();
            FileSystem fs     = new FilterFileSystem(mockFs);
            Path       path   = new Path("/a");

            // delete on close if path does exist
            Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(path))).ThenReturn(new FileStatus
                                                                                    ());
            Assert.True(fs.DeleteOnExit(path));
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Org.Mockito.Mockito.Reset(mockFs);
            Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(path))).ThenReturn(new FileStatus
                                                                                    ());
            fs.Close();
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Org.Mockito.Mockito.Verify(mockFs).Delete(Eq(path), Eq(true));
        }
        public virtual void TestCancelDeleteOnExit()
        {
            FileSystem mockFs = Org.Mockito.Mockito.Mock <FileSystem>();
            FileSystem fs     = new FilterFileSystem(mockFs);
            Path       path   = new Path("/a");

            // don't delete on close if path existed, but later cancelled
            Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(path))).ThenReturn(new FileStatus
                                                                                    ());
            Assert.True(fs.DeleteOnExit(path));
            Org.Mockito.Mockito.Verify(mockFs).GetFileStatus(Eq(path));
            Assert.True(fs.CancelDeleteOnExit(path));
            NUnit.Framework.Assert.IsFalse(fs.CancelDeleteOnExit(path));
            // false because not registered
            Org.Mockito.Mockito.Reset(mockFs);
            fs.Close();
            Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).GetFileStatus(Any
                                                                                          <Path>());
            Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Any <Path>(
                                                                                       ), AnyBoolean());
        }