示例#1
0
        public async Task StoreSubFolderBackwardSlash()
        {
            var root = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var file = string.Format("{0}\\{0}\\{0}.bin", Guid.NewGuid());

            Directory.CreateDirectory(root);

            var random = new Random();
            var bytes  = new byte[8];

            random.NextBytes(bytes);

            var item = Substitute.For <IStorageItem>();

            item.LoadMD5();
            item.Load();
            item.Data.Returns(bytes);
            item.RelativePath.Returns(file);

            var writer = new FolderWriter(root);
            await writer.Store(new[] { item });

            Assert.IsTrue(File.Exists(string.Format("{0}\\{1}", root, file)));

            Directory.Delete(root, true);
        }
示例#2
0
        public async Task Initialize()
        {
            var root = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var writer = new FolderWriter(root);
            await writer.Initialize();

            var exists = Directory.Exists(root);
            Assert.IsTrue(exists);
        }
示例#3
0
        public async Task Initialize()
        {
            var root   = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var writer = new FolderWriter(root);
            await writer.Initialize();

            var exists = Directory.Exists(root);

            Assert.IsTrue(exists);
        }
示例#4
0
        public async void ExecuteUnarchiveCommand(object parameter)
        {
            try
            {
                using (var fileDialog = new WinForms.OpenFileDialog())
                {
                    if (fileDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        _archiveFolderPath = fileDialog.FileName;
                    }
                }
                OnPropertyChanged("ArchiveFolderPath");

                WinForms.MessageBox.Show("Select where to unarchive the file");

                string folderName = "";
                using (var folderBrowserDialog = new WinForms.FolderBrowserDialog())
                {
                    if (folderBrowserDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        folderName = folderBrowserDialog.SelectedPath;
                    }
                }

                Task <bool> t = Task <bool> .Run(() =>
                {
                    var fbs = new FolderBinarySerializer();

                    Folder newFolder = (Folder)fbs.Deserialize(_archiveFolderPath);

                    var folderWriter = new FolderWriter();
                    if (folderWriter.WriteFolder(newFolder, folderName))
                    {
                        WinForms.MessageBox.Show($"Folder {newFolder.Name} was unarchivated from file {_archiveFolderPath}", "Unarchive info", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Information);
                    }


                    return(true);
                });

                await Task.WhenAll(t);
            }
            catch (Exception ex)
            {
                WinForms.MessageBox.Show($"Error in {ex.TargetSite}. \nError message : {ex.Message}", "Error!", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Error);
            }
        }
示例#5
0
        public async Task StoreSubFolderForwardSlash()
        {
            var root = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var file = string.Format("{0}/{0}/{0}.bin", Guid.NewGuid());
            Directory.CreateDirectory(root);

            var random = new Random();
            var bytes = new byte[8];
            random.NextBytes(bytes);

            var item = Substitute.For<IStorageItem>();
            item.LoadMD5();
            item.Load();
            item.Data.Returns(bytes);
            item.RelativePath.Returns(file);

            var writer = new FolderWriter(root);
            await writer.Store(new[] { item });

            Assert.IsTrue(File.Exists(string.Format("{0}\\{1}", root, file)));

            Directory.Delete(root, true);
        }
示例#6
0
        public async Task StoreSameMd5()
        {
            var root = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var file = string.Format("{0}.bin", Guid.NewGuid());
            var path = Path.Combine(root, file);

            Directory.CreateDirectory(root);

            var random = new Random();
            var bytes  = new byte[8];

            random.NextBytes(bytes);
            File.WriteAllBytes(path, bytes);
            var writtenOn = File.GetLastWriteTimeUtc(path);

            var item = new FileItem(root, path);

            var writer = new FolderWriter(root);
            await writer.Store(new[] { item });

            Assert.AreEqual(writtenOn, File.GetLastWriteTimeUtc(path));

            Directory.Delete(root, true);
        }
示例#7
0
        public async Task StoreSameMd5()
        {
            var root = string.Format("{0}\\{1}", Environment.CurrentDirectory, Guid.NewGuid());
            var file = string.Format("{0}.bin", Guid.NewGuid());
            var path = Path.Combine(root, file);
            Directory.CreateDirectory(root);

            var random = new Random();
            var bytes = new byte[8];
            random.NextBytes(bytes);
            File.WriteAllBytes(path, bytes);
            var writtenOn = File.GetLastWriteTimeUtc(path);

            var item = new FileItem(root, path);

            var writer = new FolderWriter(root);
            await writer.Store(new[] { item });

            Assert.AreEqual(writtenOn, File.GetLastWriteTimeUtc(path));

            Directory.Delete(root, true);
        }