public void RefreshRightItemStatusesAndCommandsFromChilds_UnknownChild() { var testSynchronizedItems = new TestSynchronizedItems(null); var childSynchronizedDirectories = new TestSynchronizedItems(null); childSynchronizedDirectories.RightItem.UpdateStatus(ItemStatusEnum.Unknown); testSynchronizedItems.ChildItemsList.Add(childSynchronizedDirectories); var level2Child1 = new TestSynchronizedItems(null); level2Child1.RightItem.UpdateStatus(ItemStatusEnum.Older); level2Child1.RightItem.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); }); childSynchronizedDirectories.ChildItemsList.Add(level2Child1); var level2Child2 = new TestSynchronizedItems(null); level2Child2.RightItem.UpdateStatus(ItemStatusEnum.ThereIs); level2Child2.RightItem.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); }); childSynchronizedDirectories.ChildItemsList.Add(level2Child2); var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshRightItemStatusesAndCommandsFromChilds(testSynchronizedItems); // У дочерней строки должен остаться неопределённый статус. Assert.Equal(ItemStatusEnum.Unknown, childSynchronizedDirectories.RightItem.Status.StatusEnum); // Статусы родительской строки должны измениться на неопредёлённые. Assert.Equal(ItemStatusEnum.Unknown, testSynchronizedItems.RightItem.Status.StatusEnum); // Команд не должно быть ни у дочерней строки, ни у родительской. Assert.Null(childSynchronizedDirectories.RightItem.SyncCommand.CommandAction); Assert.Null(testSynchronizedItems.RightItem.SyncCommand.CommandAction); }
public async Task RefreshRightItemStatusesAndCommandsFromChilds_CheckCommands(string strRightStatus) { var rightStatus = Enum.Parse <ItemStatusEnum>(strRightStatus); 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.RightItem.SyncCommand.SetCommandAction(() => { return(Task.Run(() => usedCommands.Add(childSynchronizedItems.RightItem.Name))); }); // Лишь половина элементов будет иметь статус для синхронизации и лишь команды этих элементов должны быть выполнены. childSynchronizedItems.RightItem.UpdateStatus(i % 2 == 0 ? rightStatus : ItemStatusEnum.Equally); } var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshRightItemStatusesAndCommandsFromChilds(testSynchronizedItems); await testSynchronizedItems.RightItem.SyncCommand.Process(); Assert.Equal(2, usedCommands.Count); Assert.Equal("Test0", usedCommands[0]); Assert.Equal("Test2", usedCommands[1]); }
public void RefreshRightItemStatusesAndCommandsFromChilds_CheckStatus(string rightStartStatus, string[] rightItemsStatuses, string rightExpectedStatus) { var testSynchronizedItems = new TestSynchronizedItems(null); testSynchronizedItems.RightItem.UpdateStatus((ItemStatusEnum)Enum.Parse(typeof(ItemStatusEnum), rightStartStatus)); foreach (var rightItemStatus in rightItemsStatuses) { var childSynchronizedItems = new TestSynchronizedItems(null); childSynchronizedItems.RightItem.UpdateStatus((ItemStatusEnum)Enum.Parse(typeof(ItemStatusEnum), rightItemStatus)); testSynchronizedItems.ChildItemsList.Add(childSynchronizedItems); } var synchronizedItemsStatusAndCommandsUpdater = new SynchronizedItemsStatusAndCommandsUpdater(null); synchronizedItemsStatusAndCommandsUpdater.RefreshRightItemStatusesAndCommandsFromChilds(testSynchronizedItems); Assert.Equal(rightExpectedStatus, testSynchronizedItems.RightItem.Status.StatusEnum.ToString()); }