Example #1
0
        public void DevideCommand_Test()
        {
            var inputStringCommand = new[]
            {
                "5 5\r\n1 2 N\r\nLMLMLMLMM\r\n",
                "5 5\r\n1 2 N\r\nLMLMLMLMM\r\n1 2 N"
            };

            var outputValues = new IComparable[]
            {
                3,
                "ERROR"
            };

            for (int i = 0; i < inputStringCommand.Length; i++)
            {
                try
                {
                    DevideCommand devideCommand = new DevideCommand(inputStringCommand[i]);

                    Assert.AreEqual(devideCommand.GetArrayListCommand.Length, outputValues[i]);
                }
                catch (DevideCommandException exceptionDevideCommand)
                {
                    Assert.AreEqual(exceptionDevideCommand.Message, "Не достаточно данных для отправки");
                }
            }
        }
Example #2
0
        /// <summary>
        /// Распредиление команд по объектам
        /// </summary>
        /// <param name="devideCommand">Класс для дробления сырого текста команд на массив для дальнейшего распределения по объектам</param>
        public ControlCommand(DevideCommand devideCommand)
        {
            GetFinalPositionRobot = new Dictionary<string, string>();

            Area area = new Area(new Point(devideCommand.GetArrayListCommand[0]));

            List<RobotBody> dronsList = new List<RobotBody>();

            int j = 1;
            int i = 0;

            while (i < ((devideCommand.GetArrayListCommand.Length - 1) / 2))
            {
                Regex regex = new Regex(@"^\s*\d+\s+\d+\s+[NnEeSsWw]$");
                if (regex.IsMatch(devideCommand.GetArrayListCommand[j]))
                {
                    regex = new Regex(@"(\d+\s+\d+)|([NnEeSsWw])");
                    MatchCollection matches = regex.Matches(devideCommand.GetArrayListCommand[j]);
                    RobotBody dron = new RobotBody(
                        new Point(matches[0].Value),
                        new Course(matches[1].ToString())
                        );

                    j++;
                    dron.Run(new Command(devideCommand.GetArrayListCommand[j]), area);
                    dronsList.Add(dron);
                    j++;
                    i++;
                    GetFinalPositionRobot.Add("Робот № " + i, String.Format("{0} {1} {2}\r\n", dron.Point.X, dron.Point.Y, dron.Course.Direction));
                }
                else
                {
                    CommandControlException ex = new CommandControlException("Строка не корректна.");
                    ex.Data.Add("Возможная ошибка в строке", devideCommand.GetArrayListCommand[j]);
                    throw ex;
                }
            }
        }