コード例 #1
0
        public virtual void TestRenameFileNonexistentDir()
        {
            Describe("rename a file into a new file in the same directory");
            Path renameSrc    = Path("testRenameSrc");
            Path renameTarget = Path("subdir/testRenameTarget");

            byte[] data = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(GetFileSystem(), renameSrc, data, data.Length, 1024
                                           * 1024, false);
            bool renameCreatesDestDirs = IsSupported(RenameCreatesDestDirs);

            try
            {
                bool rename = Rename(renameSrc, renameTarget);
                if (renameCreatesDestDirs)
                {
                    Assert.True(rename);
                    ContractTestUtils.VerifyFileContents(GetFileSystem(), renameTarget, data);
                }
                else
                {
                    NUnit.Framework.Assert.IsFalse(rename);
                    ContractTestUtils.VerifyFileContents(GetFileSystem(), renameSrc, data);
                }
            }
            catch (FileNotFoundException)
            {
                // allowed unless that rename flag is set
                NUnit.Framework.Assert.IsFalse(renameCreatesDestDirs);
            }
        }
コード例 #2
0
        public virtual void TestRenameDirIntoExistingDir()
        {
            Describe("Verify renaming a dir into an existing dir puts it underneath" + " and leaves existing files alone"
                     );
            FileSystem fs           = GetFileSystem();
            string     sourceSubdir = "source";
            Path       srcDir       = Path(sourceSubdir);
            Path       srcFilePath  = new Path(srcDir, "source-256.txt");

            byte[] srcDataset = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(fs, srcFilePath, srcDataset, srcDataset.Length, 1024
                                           , false);
            Path destDir      = Path("dest");
            Path destFilePath = new Path(destDir, "dest-512.txt");

            byte[] destDateset = ContractTestUtils.Dataset(512, 'A', 'Z');
            ContractTestUtils.WriteDataset(fs, destFilePath, destDateset, destDateset.Length,
                                           1024, false);
            AssertIsFile(destFilePath);
            bool rename     = Rename(srcDir, destDir);
            Path renamedSrc = new Path(destDir, sourceSubdir);

            AssertIsFile(destFilePath);
            AssertIsDirectory(renamedSrc);
            ContractTestUtils.VerifyFileContents(fs, destFilePath, destDateset);
            Assert.True("rename returned false though the contents were copied"
                        , rename);
        }
コード例 #3
0
        public virtual void TestCreateNewFile()
        {
            Describe("Foundational 'create a file' test");
            Path path = Path("testCreateNewFile");

            byte[] data = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(GetFileSystem(), path, data, data.Length, 1024 * 1024
                                           , false);
            ContractTestUtils.VerifyFileContents(GetFileSystem(), path, data);
        }
コード例 #4
0
        public virtual void TestOverwriteExistingFile()
        {
            Describe("Overwrite an existing file and verify the new data is there");
            Path path = Path("testOverwriteExistingFile");

            byte[] data = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(GetFileSystem(), path, data, data.Length, 1024, false
                                           );
            ContractTestUtils.VerifyFileContents(GetFileSystem(), path, data);
            byte[] data2 = ContractTestUtils.Dataset(10 * 1024, 'A', 'Z');
            ContractTestUtils.WriteDataset(GetFileSystem(), path, data2, data2.Length, 1024,
                                           true);
            ContractTestUtils.VerifyFileContents(GetFileSystem(), path, data2);
        }
コード例 #5
0
        public virtual void TestRenameFileOverExistingFile()
        {
            Describe("Verify renaming a file onto an existing file matches expectations");
            Path srcFile = Path("source-256.txt");

            byte[] srcData = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(GetFileSystem(), srcFile, srcData, srcData.Length,
                                           1024, false);
            Path destFile = Path("dest-512.txt");

            byte[] destData = ContractTestUtils.Dataset(512, 'A', 'Z');
            ContractTestUtils.WriteDataset(GetFileSystem(), destFile, destData, destData.Length
                                           , 1024, false);
            AssertIsFile(destFile);
            bool renameOverwritesDest = IsSupported(RenameOverwritesDest);
            bool renameReturnsFalseOnRenameDestExists = !IsSupported(RenameReturnsFalseIfDestExists
                                                                     );
            bool destUnchanged = true;

            try
            {
                bool renamed = Rename(srcFile, destFile);
                if (renameOverwritesDest)
                {
                    // the filesystem supports rename(file, file2) by overwriting file2
                    Assert.True("Rename returned false", renamed);
                    destUnchanged = false;
                }
                else
                {
                    // rename is rejected by returning 'false' or throwing an exception
                    if (renamed && !renameReturnsFalseOnRenameDestExists)
                    {
                        //expected an exception
                        string destDirLS = GenerateAndLogErrorListing(srcFile, destFile);
                        GetLog().Error("dest dir {}", destDirLS);
                        NUnit.Framework.Assert.Fail("expected rename(" + srcFile + ", " + destFile + " ) to fail,"
                                                    + " but got success and destination of " + destDirLS);
                    }
                }
            }
            catch (FileAlreadyExistsException e)
            {
                HandleExpectedException(e);
            }
            // verify that the destination file is as expected based on the expected
            // outcome
            ContractTestUtils.VerifyFileContents(GetFileSystem(), destFile, destUnchanged ? destData
                                 : srcData);
        }
コード例 #6
0
        public virtual void TestRenameNewFileSameDir()
        {
            Describe("rename a file into a new file in the same directory");
            Path renameSrc    = Path("rename_src");
            Path renameTarget = Path("rename_dest");

            byte[] data = ContractTestUtils.Dataset(256, 'a', 'z');
            ContractTestUtils.WriteDataset(GetFileSystem(), renameSrc, data, data.Length, 1024
                                           * 1024, false);
            bool rename = Rename(renameSrc, renameTarget);

            Assert.True("rename(" + renameSrc + ", " + renameTarget + ") returned false"
                        , rename);
            ContractTestUtils.AssertListStatusFinds(GetFileSystem(), renameTarget.GetParent()
                                                    , renameTarget);
            ContractTestUtils.VerifyFileContents(GetFileSystem(), renameTarget, data);
        }