Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }
Ejemplo n.º 5
0
        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();
        }