public void Part2StepTest() { // Given var ship = new Ship(); ship.Move(RouteInstruction.Parse("F10")); Assert.Equal(100, ship.X); Assert.Equal(10, ship.Y); Assert.Equal(10, ship.WaypointX); Assert.Equal(1, ship.WaypointY); ship.Move(RouteInstruction.Parse("N3")); Assert.Equal(100, ship.X); Assert.Equal(10, ship.Y); Assert.Equal(10, ship.WaypointX); Assert.Equal(4, ship.WaypointY); ship.Move(RouteInstruction.Parse("F7")); Assert.Equal(170, ship.X); Assert.Equal(38, ship.Y); Assert.Equal(10, ship.WaypointX); Assert.Equal(4, ship.WaypointY); ship.Move(RouteInstruction.Parse("R90")); Assert.Equal(170, ship.X); Assert.Equal(38, ship.Y); Assert.Equal(4, ship.WaypointX); Assert.Equal(-10, ship.WaypointY); ship.Move(RouteInstruction.Parse("F11")); Assert.Equal(214, ship.X); Assert.Equal(-72, ship.Y); Assert.Equal(4, ship.WaypointX); Assert.Equal(-10, ship.WaypointY); }
public void ProcessInstruction() { Instruction instruction = new Instruction(this); if (!string.IsNullOrEmpty(XYInstruction) && !string.IsNullOrWhiteSpace(XYInstruction)) { double x = double.Parse(XYInstruction[0].ToString()); double y = double.Parse(XYInstruction[2].ToString()); string dir = XYInstruction.Length < 5 ? "n" : XYInstruction[4].ToString(); instruction.Position = new System.Windows.Point(x, y); switch (dir.ToLower()) { case "n": { instruction.InitialDirection = DirectionTypes.North; } break; case "s": { instruction.InitialDirection = DirectionTypes.South; } break; case "e": { instruction.InitialDirection = DirectionTypes.East; } break; case "w": { instruction.InitialDirection = DirectionTypes.West; } break; } } else { string dir = DirectionString; instruction.Position = new System.Windows.Point(Left, Top); instruction.InitialDirection = Direction; } instruction.Moves = string.IsNullOrWhiteSpace(RouteInstruction) || string.IsNullOrEmpty(RouteInstruction) ? new string[0] : RouteInstruction.Where(c => !char.IsWhiteSpace(c) && char.IsLetter(c) && new string[] { "m", "l", "r" }.Contains(c.ToString().ToLower())).Select(c => c.ToString()).ToArray(); Instruction = instruction; }
public void Part1StepTest() { // Given var ship = new Ship(); ship.MoveAbsolute(RouteInstruction.Parse("F10")); Assert.Equal(10, ship.X); Assert.Equal(0, ship.Y); ship.MoveAbsolute(RouteInstruction.Parse("N3")); Assert.Equal(10, ship.X); Assert.Equal(3, ship.Y); ship.MoveAbsolute(RouteInstruction.Parse("F7")); Assert.Equal(17, ship.X); Assert.Equal(3, ship.Y); ship.MoveAbsolute(RouteInstruction.Parse("R90")); Assert.Equal(17, ship.X); Assert.Equal(3, ship.Y); Assert.Equal(270, ship.Orientation); ship.MoveAbsolute(RouteInstruction.Parse("F11")); Assert.Equal(17, ship.X); Assert.Equal(-8, ship.Y); }