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); } }
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); } }
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); } }