public void Validate_AllCorrectValuesModel_Success()
        {
            // Arrange
            var validator = new RoverProgramValidator();
            var model     = new RoverProgramModel()
            {
                InitialX         = 1,
                InitialY         = 4,
                InitialDirection = "W",
                Commands         = "MLRRMmlMM"
            };

            // Act
            var validationResult = validator.ValidateModelIfNotNull(model);

            // Assert
            Assert.IsTrue(validationResult.IsValid);
        }
Ejemplo n.º 2
0
        internal Rover InitializeRover(int index, RoverProgramModel model, List <string> directions, List <string> commands)
        {
            var rover = new Rover()
            {
                Id = index
            };

            var roverPosition = new Position()
            {
                X         = model.InitialX,
                Y         = model.InitialY,
                Direction = DirectionParser.GetDirection(model.InitialDirection.ToUpper(), directions)
            };

            rover.CurrentPosition = roverPosition;
            rover.Commands        = CommandParser.GetCommands(model.Commands.ToUpper(), commands);

            return(rover);
        }
        public void Validate_AllIncorrectValuesModel_Fail()
        {
            // Arrange
            var validator = new RoverProgramValidator();
            var model     = new RoverProgramModel()
            {
                InitialX         = -1,
                InitialY         = -4,
                InitialDirection = "G",
                Commands         = "MLRRmmlMhMD"
            };

            // Act
            var validationResult = validator.ValidateModelIfNotNull(model);

            // Assert
            Assert.IsFalse(validationResult.IsValid);
            Assert.AreEqual(5, validationResult.Errors.Count);

            Assert.AreEqual("1", validationResult.Errors[0].ErrorCode);
            Assert.AreEqual("Field value has to be greater than or equal to 0", validationResult.Errors[0].ErrorMessage);
            Assert.AreEqual("InitialX", validationResult.Errors[0].PropertyName);

            Assert.AreEqual("1", validationResult.Errors[1].ErrorCode);
            Assert.AreEqual("Field value has to be greater than or equal to 0", validationResult.Errors[1].ErrorMessage);
            Assert.AreEqual("InitialY", validationResult.Errors[1].PropertyName);

            Assert.AreEqual("PredicateValidator", validationResult.Errors[2].ErrorCode);
            Assert.AreEqual("InitialDirection should be one of the following values: [N - North, E - East, S - South, W - West]", validationResult.Errors[2].ErrorMessage);
            Assert.AreEqual("InitialDirection", validationResult.Errors[2].PropertyName);
            Assert.AreEqual("G", validationResult.Errors[2].AttemptedValue);

            Assert.AreEqual("PredicateValidator", validationResult.Errors[3].ErrorCode);
            Assert.AreEqual("Commands should consist of the following values: [M - Move, L - Left, R - Right]", validationResult.Errors[3].ErrorMessage);
            Assert.AreEqual("Commands[8]", validationResult.Errors[3].PropertyName);
            Assert.AreEqual('h', validationResult.Errors[3].AttemptedValue);

            Assert.AreEqual("PredicateValidator", validationResult.Errors[4].ErrorCode);
            Assert.AreEqual("Commands should consist of the following values: [M - Move, L - Left, R - Right]", validationResult.Errors[4].ErrorMessage);
            Assert.AreEqual("Commands[10]", validationResult.Errors[4].PropertyName);
            Assert.AreEqual('D', validationResult.Errors[4].AttemptedValue);
        }