コード例 #1
0
        public RobotCommandType Run(IRobot robot, List <string> commandList)
        {
            if (commandList == null || commandList.Count == 0)
            {
                throw new ArgumentException(BlankCommandError);
            }

            if (!char.TryParse(commandList[0].ToUpper(), out var commandChar))
            {
                throw new ArgumentException(string.Format(CannotIdentityCommandError, commandList[0]));
            }

            if (!_robotCommandDictionary.ContainsKey((RobotCommandType)commandChar))
            {
                throw new ArgumentException(string.Format(CannotIdentityCommandError, commandChar));
            }

            var robotCommandType = (RobotCommandType)commandChar;

            if (robotCommandType == RobotCommandType.Quit)
            {
                return(robotCommandType);
            }

            var robotCommandEventArgs = new RobotCommandEventArgs(robot, commandList);

            _robotCommandDictionary[(RobotCommandType)commandChar].Execute(robotCommandEventArgs);
            return(robotCommandType);
        }
コード例 #2
0
        public override bool CanExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            if (robotCommandEventArgs.RobotCommandList.Count != 1 || robotCommandEventArgs.RobotCommandList[0].ToUpper() != "S")
            {
                throw new ArgumentException(String.Format("Reset command syntax not matched.{0}Syntax: S{0}Eg: S", Environment.NewLine));
            }

            return(true);
        }
コード例 #3
0
        public override bool CanExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            if (robotCommandEventArgs.Robot == null)
            {
                throw new ArgumentException("Robot has not been initialized. Cannot send command to it.");
            }

            if (robotCommandEventArgs.RobotCommandList.Count != 1 || robotCommandEventArgs.RobotCommandList[0].ToUpper() != "R")
            {
                throw new ArgumentException(String.Format("Replay command syntax not matched.{0}Syntax: R{0}Eg: R", Environment.NewLine));
            }

            return(true);
        }
コード例 #4
0
        public override bool CanExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            if (robotCommandEventArgs.Robot == null)
            {
                throw new ArgumentException("Robot has not been initialized. Cannot send command to it.");
            }

            if (robotCommandEventArgs.RobotCommandList.Count != 2 || robotCommandEventArgs.RobotCommandList[0].ToUpper() != "M" || !double.TryParse(robotCommandEventArgs.RobotCommandList[1], out var distance))
            {
                throw new ArgumentException(String.Format("Move command syntax not matched.{0}Syntax: M <Distance in Decimal number>{0}Eg: M 10.3", Environment.NewLine));
            }

            return(true);
        }
コード例 #5
0
        protected override void InnerExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            var replayCommands = CommandRecorder.Replay();

            foreach (var command in replayCommands)
            {
                try
                {
                    _robotCommandHandler.Run(robotCommandEventArgs.Robot, command);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
コード例 #6
0
        protected override void InnerExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            var distance = double.Parse(robotCommandEventArgs.RobotCommandList[1]);

            robotCommandEventArgs.Robot.Move(distance);
        }
コード例 #7
0
ファイル: TurnRobotCommand.cs プロジェクト: tanmaymgupta/EVPN
        protected override void InnerExecute(RobotCommandEventArgs robotCommandEventArgs)
        {
            var angle = double.Parse(robotCommandEventArgs.RobotCommandList[1]);

            robotCommandEventArgs.Robot.Turn(angle);
        }
コード例 #8
0
 protected override void InnerExecute(RobotCommandEventArgs robotCommandEventArgs)
 {
     CommandRecorder.Reset();
 }
コード例 #9
0
 public abstract bool CanExecute(RobotCommandEventArgs robotCommandEventArgs);
コード例 #10
0
 protected abstract void InnerExecute(RobotCommandEventArgs robotCommandEventArgs);
コード例 #11
0
ファイル: BeepRobotCommand.cs プロジェクト: tanmaymgupta/EVPN
 protected override void InnerExecute(RobotCommandEventArgs robotCommandEventArgs)
 {
     robotCommandEventArgs.Robot.Beep();
 }