public void Sorting_Of_Array_Returns_Correct_Data() { RouteBlock <int>[] routeBlock = new RouteBlock <int>[] { new RouteBlock <int>(5, 6), new RouteBlock <int>(4, 5), new RouteBlock <int>(6, 7) }; var expected = new RouteBlock <int>[] { new RouteBlock <int>(4, 5), new RouteBlock <int>(5, 6), new RouteBlock <int>(6, 7) }; var actual = Sorting <int> .GetSortedRouteBlocks(routeBlock); Assert.AreEqual(expected[0].Input, actual[0].Input); Assert.AreEqual(expected[1].Input, actual[1].Input); Assert.AreEqual(expected[2].Input, actual[2].Input); Assert.AreEqual(expected[0].Output, actual[0].Output); Assert.AreEqual(expected[1].Output, actual[1].Output); Assert.AreEqual(expected[2].Output, actual[2].Output); Assert.AreEqual(expected.Length, actual.Count); }
private void UnlockAdditionalBlocksFor(RouteBlock block) { var fbPlus = Ctx?.GetClientHandler()?._metadata?.FeedbacksData.GetByBlockId(block.identifier, SideMarker.Plus); if (fbPlus != null) { fbPlus.LockedByBlock = string.Empty; } var fbMinus = Ctx?.GetClientHandler()?._metadata?.FeedbacksData.GetByBlockId(block.identifier, SideMarker.Minus); if (fbMinus != null) { fbMinus.LockedByBlock = string.Empty; } }
public void Sorting_Gives_Chain_Of_Blocks() { RouteBlock <string>[] routeBlock = new RouteBlock <string>[] { new RouteBlock <string>("Venus", "Earth"), new RouteBlock <string>("Mars", "Jupiter"), new RouteBlock <string>("Neptune", "Pluto"), new RouteBlock <string>("Mercury", "Venus"), new RouteBlock <string>("Saturn", "Uranus"), new RouteBlock <string>("Uranus", "Neptune"), new RouteBlock <string>("Earth", "Mars"), new RouteBlock <string>("Jupiter", "Saturn") }; var expected = new RouteBlock <string>[] { new RouteBlock <string>("Mercury", "Venus"), new RouteBlock <string>("Venus", "Earth"), new RouteBlock <string>("Earth", "Mars"), new RouteBlock <string>("Mars", "Jupiter"), new RouteBlock <string>("Jupiter", "Saturn"), new RouteBlock <string>("Saturn", "Uranus"), new RouteBlock <string>("Uranus", "Neptune"), new RouteBlock <string>("Neptune", "Pluto") }; var actual = Sorting <string> .GetSortedRouteBlocks(routeBlock); Assert.AreEqual(actual[0].Output, actual[1].Input); Assert.AreEqual(actual[1].Output, actual[2].Input); Assert.AreEqual(actual[2].Output, actual[3].Input); Assert.AreEqual(actual[3].Output, actual[4].Input); Assert.AreEqual(actual[4].Output, actual[5].Input); Assert.AreEqual(actual[5].Output, actual[6].Input); Assert.AreEqual(actual[6].Output, actual[7].Input); Assert.AreEqual(expected[1].Input, actual[1].Input); Assert.AreEqual(expected[2].Input, actual[2].Input); Assert.AreEqual(expected[0].Output, actual[0].Output); Assert.AreEqual(expected[1].Output, actual[1].Output); Assert.AreEqual(expected[2].Output, actual[2].Output); }
private void LockAdditionalBlocksFor(RouteBlock block) { var reachedBlock = Ctx?.GetClientHandler()?._metadata?.FeedbacksData.GetByBlockId(block.Caption); if (reachedBlock == null) { return; } var additionalBlockLocks = reachedBlock.AdditionalBlockLocks; if (additionalBlockLocks.Count == 0) { return; } foreach (var blockToLock in additionalBlockLocks) { if (string.IsNullOrEmpty(blockToLock)) { continue; } var fbs = Ctx?.GetFeedbacksDataForBlock(blockToLock); if (fbs == null || fbs.Count == 0) { continue; } foreach (var itt in fbs) { if (itt == null) { continue; } itt.LockedByBlock = block.identifier; } } }
private static void Main(string[] args) { RouteBlock <string>[] testArray1 = new RouteBlock <string>[] { new RouteBlock <string>("Самара", "Казань"), new RouteBlock <string>("Омск", "Рязань"), new RouteBlock <string>("Казань", "Москва"), new RouteBlock <string>("Пермь", "Самара"), new RouteBlock <string>("Ижевск", "Воронеж"), new RouteBlock <string>("Тамбов", "Пермь"), new RouteBlock <string>("Тула", "Ижевск"), new RouteBlock <string>("Москва", "Омск"), new RouteBlock <string>("Рязань", "Тула") }; RouteBlock <int>[] testArray2 = new RouteBlock <int>[] { new RouteBlock <int>(5, 6), new RouteBlock <int>(3, 4), new RouteBlock <int>(7, 8), new RouteBlock <int>(4, 5), new RouteBlock <int>(1, 2), new RouteBlock <int>(9, 10), new RouteBlock <int>(2, 3), new RouteBlock <int>(8, 9), new RouteBlock <int>(6, 7) }; List <RouteBlock <int> > testList1 = new List <RouteBlock <int> > { new RouteBlock <int>(5, 6), new RouteBlock <int>(3, 4), new RouteBlock <int>(7, 8), new RouteBlock <int>(4, 5), new RouteBlock <int>(1, 2), new RouteBlock <int>(9, 10), new RouteBlock <int>(2, 3), new RouteBlock <int>(8, 9), new RouteBlock <int>(6, 7) }; #region Сортировка массива данных строкового типа Console.WriteLine("Input Array1: "); foreach (var item in testArray1) { Console.Write($"{item.Input}\t{item.Output}\n"); } try { var sortedArray1 = Sorting <string> .GetSortedRouteBlocks(testArray1); Console.WriteLine("Sorted Array1: "); foreach (var item in sortedArray1) { Console.Write($"{item.Input}\t{item.Output}\n"); } } catch (Exception ex) { Console.WriteLine($"Произошла ошибка. {ex.Message}"); } #endregion #region Сортировка массива даных целочисленного типа Console.WriteLine("\nInput Array2: "); foreach (var item in testArray2) { Console.Write($"{item.Input}\t{item.Output}\n"); } try { var sortedArray2 = Sorting <int> .GetSortedRouteBlocks(testArray2); Console.WriteLine("\nSorted Array2: "); foreach (var item in sortedArray2) { Console.Write($"{item.Input}\t{item.Output}\n"); } } catch (Exception ex) { Console.WriteLine($"Произошла ошибка. {ex.Message}"); } #endregion #region Сортировка списка даных целочисленного типа Console.WriteLine("\nInput List1: "); foreach (var item in testList1) { Console.Write($"{item.Input}\t{item.Output}\n"); } try { var sortedList1 = Sorting <int> .GetSortedRouteBlocks(testList1); Console.WriteLine("\nSorted List1: "); foreach (var item in sortedList1) { Console.Write($"{item.Input}\t{item.Output}\n"); } } catch (Exception ex) { Console.WriteLine($"Произошла ошибка. {ex.Message}"); } #endregion Console.ReadKey(); }