public void ValidPositionAndFacingIsOnTable()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.IsOnTable();

            Assert.IsTrue(actual);
        }
        public void NotInTableCannotMove()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            mockContext.Object.Position.X = mockSettings.Object.MinX - 1;  //Make IsOnTable return false
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.CanMove();

            Assert.IsFalse(actual);
        }
        public void NullFacingIsNotOnTable()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            mockContext.Setup(mc => mc.Facing).Returns((Facing?)null);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.IsOnTable();

            Assert.IsFalse(actual);
        }
        public void CanMoveWhenFacingWestButNotAtWestEdge()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            mockContext.Object.Position.X = mockSettings.Object.MinX + 1;
            mockContext.Setup(mc => mc.Facing).Returns(Facing.West);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.CanMove();

            Assert.IsTrue(actual);
        }
        public void CannotMoveWhenFacingEastAtEastEdge()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            mockContext.Object.Position.X = mockSettings.Object.MaxX;
            mockContext.Setup(mc => mc.Facing).Returns(Facing.East);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.CanMove();

            Assert.IsFalse(actual);
        }
        public void ValidPositionIsOnTable_SameAsMaxY()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            var position = mockContext.Object.Position;

            position.Y = mockSettings.Object.MaxY;
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.IsOnTable();

            Assert.IsTrue(actual);
        }
        public void InvalidPositionIsNotOnTable_BiggerThanMaxY()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            var position = mockContext.Object.Position;

            position.Y = mockSettings.Object.MaxY + 1;
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.IsOnTable();

            Assert.IsFalse(actual);
        }
        public void FromWestTurnRightShouldBeNorth()
        {
            GetValidContextAndSettingWhichOnTable(out var context, out var settings);
            context.Facing = Facing.West;
            var expect  = Facing.North;
            var service = new ToyRobotService(context, settings);

            service.Turn(Direction.Right);
            var actual = context.Facing;

            Assert.AreEqual(expect, actual);
        }
        public void FromSouthTurnLeftShouldBeEast()
        {
            GetValidContextAndSettingWhichOnTable(out var context, out var settings);
            context.Facing = Facing.South;
            var expect  = Facing.East;
            var service = new ToyRobotService(context, settings);

            service.Turn(Direction.Left);
            var actual = context.Facing;

            Assert.AreEqual(expect, actual);
        }
        public void MoveWestDecreaseOneOfX()
        {
            GetValidMockContextAndSettingWhichOnTable(out var mockContext, out var mockSettings);
            mockContext.Setup(mc => mc.Facing).Returns(Facing.West);
            var expect  = mockContext.Object.Position.X - 1;
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);

            service.Move();
            var actual = mockContext.Object.Position.X;

            Assert.AreEqual(expect, actual);
        }
        public void GetFacingShouldBeSameWithContext()
        {
            var mockContext  = new Mock <IToyRobotContext>();
            var mockSettings = new Mock <ITableTopSettings>();
            var facing       = Facing.South;

            mockContext.Setup(mc => mc.Facing).Returns(facing);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.GetFacing();

            Assert.AreEqual(facing, actual);
        }
예제 #12
0
        public static void Main(string[] args)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

            try
            {
                log.Info("INIT - TOY ROBOT");

                var builder = new ConfigurationBuilder()
                              .SetBasePath(Directory.GetCurrentDirectory())
                              .AddJsonFile("appsettings.json");

                var configuration = builder.Build();

                ToyRobotService _toyRobot = new ToyRobotService();

                log.Info("SETUP - TOY ROBOT");

                int width  = int.Parse(configuration["width"]);
                int height = int.Parse(configuration["height"]);

                _toyRobot.SetWidth(width);
                _toyRobot.SetHeight(height);

                log.Info("START - TOY ROBOT");

                while (1 == 1)
                {
                    try
                    {
                        var output = _toyRobot.SendCommand(Console.ReadLine());
                        if (output != null)
                        {
                            Console.WriteLine(output);
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }
        public void SetPlacePositionShouldSaveToContext()
        {
            var context      = new ToyRobotContext();
            var mockSettings = new Mock <ITableTopSettings>();
            var service      = new ToyRobotService(context, mockSettings.Object);
            var position     = new Position()
            {
                X = 2, Y = 3
            };

            service.SetPlace(position, Facing.North);
            var actual = context.Position;

            Assert.AreEqual(position, actual);
        }
        public void GetPositionShouldBeSameWithContext()
        {
            var mockContext  = new Mock <IToyRobotContext>();
            var mockSettings = new Mock <ITableTopSettings>();
            var position     = new Position()
            {
                X = 1, Y = 1
            };

            mockContext.Setup(mc => mc.Position).Returns(position);
            var service = new ToyRobotService(mockContext.Object, mockSettings.Object);
            var actual  = service.GetPosition();

            Assert.AreEqual(position, actual);
        }
예제 #15
0
 public ToyRobotUnitTest()
 {
     _toyRobot = new ToyRobotService();
     _toyRobot.SetWidth(5);
     _toyRobot.SetHeight(5);
 }