public void RefreshLeftItemStatusesAndCommandsFromChilds_UnknownChild() { var testSynchronizedItems = new TestSynchronizedItems(null); var childSynchronizedDirectories = new TestSynchronizedItems(null); childSynchronizedDirectories.LeftItem.UpdateStatus(ItemStatusEnum.Unknown); testSynchronizedItems.ChildItemsList.Add(childSynchronizedDirectories); var level2Child1 = new TestSynchronizedItems(null); level2Child1.LeftItem.UpdateStatus(ItemStatusEnum.Newer); level2Child1.LeftItem.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); }); childSynchronizedDirectories.ChildItemsList.Add(level2Child1); var level2Child2 = new TestSynchronizedItems(null); level2Child2.LeftItem.UpdateStatus(ItemStatusEnum.Missing); level2Child2.LeftItem.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); }); childSynchronizedDirectories.ChildItemsList.Add(level2Child2); var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshLeftItemStatusesAndCommandsFromChilds(testSynchronizedItems); // У дочерней строки должен остаться неопределённый статус. Assert.Equal(ItemStatusEnum.Unknown, childSynchronizedDirectories.LeftItem.Status.StatusEnum); // Статусы родительской строки должны измениться на неопредёлённые. Assert.Equal(ItemStatusEnum.Unknown, testSynchronizedItems.LeftItem.Status.StatusEnum); // Команд не должно быть ни у дочерней строки, ни у родительской. Assert.Null(childSynchronizedDirectories.LeftItem.SyncCommand.CommandAction); Assert.Null(testSynchronizedItems.LeftItem.SyncCommand.CommandAction); }
public async Task RefreshLeftItemStatusesAndCommandsFromChilds_CheckCommands(string strLeftStatus) { var leftStatus = Enum.Parse <ItemStatusEnum>(strLeftStatus); var usedCommands = new List <string>(); // Наименования элемнтов, чьи команды будут выполнены. var testSynchronizedItems = new TestSynchronizedItems(null); for (byte i = 0; i < 4; i++) { var childSynchronizedItems = new TestSynchronizedItems("Test" + i.ToString()); testSynchronizedItems.ChildItemsList.Add(childSynchronizedItems); // Запишем команды синхронизации для каждого элемента. childSynchronizedItems.LeftItem.SyncCommand.SetCommandAction(() => { return(Task.Run(() => usedCommands.Add(childSynchronizedItems.LeftItem.Name))); }); // Лишь половина элементов будет иметь статус для синхронизации и лишь команды этих элементов должны быть выполнены. childSynchronizedItems.LeftItem.UpdateStatus(i % 2 == 0 ? leftStatus : ItemStatusEnum.Equally); } var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshLeftItemStatusesAndCommandsFromChilds(testSynchronizedItems); await testSynchronizedItems.LeftItem.SyncCommand.Process(); Assert.Equal(2, usedCommands.Count); Assert.Equal("Test0", usedCommands[0]); Assert.Equal("Test2", usedCommands[1]); }
public void RefreshLeftItemStatusesAndCommandsFromChilds_CheckStatus(string leftStartStatus, string[] leftItemsStatuses, string leftExpectedStatus) { var testSynchronizedItems = new TestSynchronizedItems(null); testSynchronizedItems.LeftItem.UpdateStatus((ItemStatusEnum)Enum.Parse(typeof(ItemStatusEnum), leftStartStatus)); foreach (var leftItemStatus in leftItemsStatuses) { var childSynchronizedItems = new TestSynchronizedItems(null); childSynchronizedItems.LeftItem.UpdateStatus((ItemStatusEnum)Enum.Parse(typeof(ItemStatusEnum), leftItemStatus)); testSynchronizedItems.ChildItemsList.Add(childSynchronizedItems); } var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshLeftItemStatusesAndCommandsFromChilds(testSynchronizedItems); Assert.Equal(leftExpectedStatus, testSynchronizedItems.LeftItem.Status.StatusEnum.ToString()); }