def test_rotate_s_r(self, position_1_1): lawn_mower = LawnMower(position_1_1, 'S') lawn_mower.rotate('R') assert lawn_mower.orientation == 'W'
def test_move_1_1_e(self, position_1_1): lawn_mower = LawnMower(position_1_1, 'E') lawn_mower.move('F') assert lawn_mower.position.x == 2 assert lawn_mower.position.y == 1
def test_s_orientation(self, position_1_1): lawn_mower = LawnMower(position_1_1, 'S') assert lawn_mower.orientation == 'S'
def test_rotate_w_l(self, position_1_1): lawn_mower = LawnMower(position_1_1, 'W') lawn_mower.rotate('L') assert lawn_mower.orientation == 'S'
def test_move_5_0_s(self, position_5_0): lawn_mower = LawnMower(position_5_0, 'S') lawn_mower.move('F') assert lawn_mower.position.x == 5 assert lawn_mower.position.y == 0
def test_unexpected_orientation(self, position_1_1): with pytest.raises(UnexpectedOrientation): LawnMower(position_1_1, 'foo')
def test_move_5_5_w(self, position_5_5): lawn_mower = LawnMower(position_5_5, 'W') lawn_mower.move('F') assert lawn_mower.position.x == 4 assert lawn_mower.position.y == 5
def test_move_0_5_s(self, position_0_5): lawn_mower = LawnMower(position_0_5, 'S') lawn_mower.move('F') assert lawn_mower.position.x == 0 assert lawn_mower.position.y == 4
def test_move_0_5_e(self, position_0_5): lawn_mower = LawnMower(position_0_5, 'E') lawn_mower.move('F') assert lawn_mower.position.x == 1 assert lawn_mower.position.y == 5
def test_move_0_0_w(self, position_0_0): lawn_mower = LawnMower(position_0_0, 'W') lawn_mower.move('F') assert lawn_mower.position.x == 0 assert lawn_mower.position.y == 0
import argparse from models import Grid, Position, LawnMower from utils import parse_file parser = argparse.ArgumentParser(description='Lawn mowers processor.') parser.add_argument('lm_data_file', metavar='lm-data-file', type=str, help='Lawn mowers data file locations.') args = parser.parse_args() if __name__ == '__main__': parse_data = parse_file(args.lm_data_file) grid = Grid(*parse_data['grid']) lm_actions = [] for lm in parse_data['lawn_mowers']: position = Position(*lm['position'], grid=grid) orientation = lm['orientation'] lm_actions.append([LawnMower(position, orientation), lm['actions']]) for lawn_mower, actions in lm_actions: lawn_mower.perform_actions(actions) print(lawn_mower.position.x, lawn_mower.position.y, lawn_mower.orientation)