Exemple #1
0
 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'
Exemple #2
0
 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
Exemple #3
0
 def test_s_orientation(self, position_1_1):
     lawn_mower = LawnMower(position_1_1, 'S')
     assert lawn_mower.orientation == 'S'
Exemple #4
0
 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'
Exemple #5
0
 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
Exemple #6
0
 def test_unexpected_orientation(self, position_1_1):
     with pytest.raises(UnexpectedOrientation):
         LawnMower(position_1_1, 'foo')
Exemple #7
0
 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
Exemple #8
0
 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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
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)