public void TestParser(string instructions, int expectedCount)
        {
            var singleInstructionMock = new Mock <ISingleInstructionParser>(MockBehavior.Strict);

            var testInstruction = new RelativeInstruction(
                direction: new RelativeDirection(90),
                travelDistance: 1);

            singleInstructionMock.Setup(p => p.ParseSingleInstruction(It.IsNotNull <string>())).
            Returns(testInstruction);

            var fullParser = new RelativeInstructionParser(
                singleInstructionParser: singleInstructionMock.Object);

            var result = fullParser.ParseRawInstructions(instructions);

            // Make sure result is not null.
            Assert.NotNull(result);

            // Make sure the number of things we expected came back.
            Assert.Equal(expectedCount, result.Count);

            // Make sure the parser mock got called as many times as we expect.
            singleInstructionMock.Verify(p => p.ParseSingleInstruction(It.IsNotNull <string>()), Times.Exactly(expectedCount));

            // Make sure the items returned by the single parser
            // get included in the final output.
            foreach (var item in result)
            {
                Assert.Equal(testInstruction, item);
            }
        }
        public void ConstructorArgumentsGetAssigned()
        {
            var          direction      = new RelativeDirection(0);
            const double travelDistance = 38.3;

            var instruction = new RelativeInstruction(
                direction: direction,
                travelDistance: travelDistance);

            Assert.Equal(direction, instruction.Direction);
            Assert.Equal(travelDistance, instruction.TravelDistance);
        }
Beispiel #3
0
        public void DefaultSimulateResults()
        {
            var sim = new InstructionSimulator();

            var leftOne = new RelativeInstruction(
                direction: new RelativeDirection(90),
                travelDistance: 1);

            // Three left turns + 1 step should get us at 0, -1
            var simList = new List <RelativeInstruction>
            {
                leftOne,
                leftOne,
                leftOne
            };

            var result = sim.Simulate(simList);

            // These are almost integration-worthy tests. But they are still useful.
            Assert.Equal(result.StartPosition, new GridCoordinate(0, 0));
            Assert.Equal(result.EndPosition, new GridCoordinate(0, -1));
        }