Exemplo n.º 1
0
        public async Task Load()
        {
            using (var testDirectory = new TestDirectory())
            {
                var directory = new Directory(testDirectory.FullPath, null, new TestItemFactory());

                const string emptyDirectoryName       = "EmptyDirectory";
                var          emptyDirectoryLastUpdate = new DateTime(2019, 2, 2, 15, 30, 20);
                var          emptyDirectoryPath       = testDirectory.CreateDirectory(emptyDirectoryName, emptyDirectoryLastUpdate);

                const string notEmptyDirectoryName       = "NotEmptyDirectory";
                var          notEmptyDirectoryLastUpdate = new DateTime(2019, 4, 4, 16, 35, 25);
                var          notEmptyDirectoryPath       = testDirectory.CreateDirectory(notEmptyDirectoryName);

                const string file1Name       = "File1";
                var          file1LastUpdate = new DateTime(2018, 3, 3, 12, 0, 30);
                const string file2Name       = "File2";
                var          file2LastUpdate = new DateTime(2019, 2, 3, 11, 5, 10);
                TestDirectory.CreateFiles(notEmptyDirectoryPath, new Dictionary <string, DateTime>
                {
                    { file1Name, file1LastUpdate },
                    { file2Name, file2LastUpdate }
                });

                // Только после добавления файлов в директорию, так как дата перетёрлась бы.
                IODirectory.SetLastWriteTime(notEmptyDirectoryPath, notEmptyDirectoryLastUpdate);

                const string rootFileName       = "RootFile";
                var          rootFileLastUpdate = new DateTime(2019, 2, 5, 8, 5, 0);
                testDirectory.CreateFiles(new Dictionary <string, DateTime> {
                    { rootFileName, rootFileLastUpdate }
                });

                await directory.Load();

                Assert.True(directory.IsLoaded);
                Assert.Equal(2, directory.Items.Length); // Один файл и одна не пустая директория.

                // Сначала идёт директория, а потом файл.
                Assert.IsType <Directory>(directory.Items[0]);
                Assert.IsType <TestFile>(directory.Items[1]);

                Assert.Equal(notEmptyDirectoryName, directory.Items[0].Name);
                Assert.Equal(notEmptyDirectoryPath, directory.Items[0].FullPath);
                Assert.Equal(notEmptyDirectoryLastUpdate, directory.Items[0].LastUpdate);
                Assert.True(((IDirectory)directory.Items[0]).IsLoaded);
                Assert.Equal(2, ((IDirectory)directory.Items[0]).Items.Length);
                var file1 = ((IDirectory)directory.Items[0]).Items[0];
                Assert.Equal(file1Name, file1.Name);
                Assert.Equal(file1LastUpdate, file1.LastUpdate);
                var file2 = ((IDirectory)directory.Items[0]).Items[1];
                Assert.Equal(file2Name, file2.Name);
                Assert.Equal(file2LastUpdate, file2.LastUpdate);

                Assert.Equal(rootFileName, directory.Items[1].Name);
                Assert.Equal(rootFileLastUpdate, directory.Items[1].LastUpdate);
            }
        }
Exemplo n.º 2
0
        public async Task DeleteChildItem()
        {
            using (var testDirectory = new TestDirectory())
            {
                TestDirectory.CreateFiles(testDirectory.CreateDirectory("Child"), new Dictionary <string, DateTime>
                {
                    { "1", DateTime.Now }
                });

                var directory = new Directory(testDirectory.FullPath, null, new TestItemFactory());
                await directory.Load();

                await directory.Items[0].Delete();

                Assert.Empty(directory.Items); // Дочерний элемент должен удаляться из коллекции.
            }
        }
        public async Task LoadWithExcludedExtensions(string[] excludedExtensions, byte loadedFilesCount)
        {
            var testSettingsStorage = new TestSettingsStorage();

            using (var testDirectory = new TestDirectory())
            {
                var fileLastUpdate = DateTime.Now;

                var leftDirectory = testDirectory.CreateDirectory("1");
                TestDirectory.CreateFiles(leftDirectory, new Dictionary <string, DateTime>
                {
                    { "1.tiff", fileLastUpdate },
                    { "2.tiff", fileLastUpdate },
                    { "3.tiff", fileLastUpdate },
                    { "4.jpg", fileLastUpdate },
                    { "5.jpg", fileLastUpdate },
                    { "6.png", fileLastUpdate }
                });

                var rightDirectory = testDirectory.CreateDirectory("2");
                TestDirectory.CreateFiles(rightDirectory, new Dictionary <string, DateTime>
                {
                    { "1.tiff", fileLastUpdate },
                    { "2.tiff", fileLastUpdate },
                    { "3.tiff", fileLastUpdate },
                    { "4.jpg", fileLastUpdate },
                    { "5.jpg", fileLastUpdate },
                    { "6.png", fileLastUpdate }
                });

                var settingsRow1 = new SettingsRow(leftDirectory, rightDirectory, true, excludedExtensions);
                testSettingsStorage.SettingsRows = new[] { settingsRow1 };

                var synchronizedDirectoriesManager = new SynchronizedDirectoriesManager(testSettingsStorage, new SynchronizedItemFactory(new ItemFactory()),
                                                                                        new SynchronizedItemsStatusAndCommandsUpdater(new SynchronizedItemMatcher()));
                await synchronizedDirectoriesManager.Load();

                Assert.Single(synchronizedDirectoriesManager.SynchronizedDirectories);
                var synchronizedDirectory = synchronizedDirectoriesManager.SynchronizedDirectories.Single();
                Assert.Equal(loadedFilesCount, synchronizedDirectory.LeftDirectory.Items.Length);
                Assert.Equal(loadedFilesCount, synchronizedDirectory.RightDirectory.Items.Length);
            }
        }
Exemplo n.º 4
0
        public async Task LoadWithExcludedExtensions(string[] excludedExtensions, byte loadedFilesCount)
        {
            var fileLastUpdate = DateTime.Now;

            using (var testDirectory = new TestDirectory())
            {
                testDirectory.CreateFiles(new System.Collections.Generic.Dictionary <string, DateTime>
                {
                    { "1.tiff", fileLastUpdate },
                    { "2.tiff", fileLastUpdate },
                    { "3.tiff", fileLastUpdate },
                    { "4.jpg", fileLastUpdate },
                    { "5.jpg", fileLastUpdate },
                    { "6.png", fileLastUpdate }
                });

                var directory = new Directory(testDirectory.FullPath, excludedExtensions, new TestItemFactory());
                await directory.Load();

                Assert.True(directory.IsLoaded);
                Assert.Equal(loadedFilesCount, directory.Items.Length);
            }
        }