class CommandInput(object):
    """Interprets commands and sends them to Pacman class"""
    def __init__(self):
        self.pac = Pacman()

    #Method for interpreting inputCommand
    def _execute(self, inputCommand):
        inputCommandSplit = inputCommand.split(" ")
        #Move
        if inputCommand == "MOVE":
            self.pac.Move()
        #turn left
        elif inputCommand == "LEFT":
            self.pac.Left()
        #turn right
        elif inputCommand == "RIGHT":
            self.pac.Right()
        #report position
        elif inputCommand == "REPORT":
            return self.pac.Report()
        #Place pacman
        elif len(inputCommandSplit) == 2 and inputCommandSplit[0] == "PLACE":
            #get coordinates
            posSplit = inputCommandSplit[1].split(",")
            #Check coordinates are correct
            if len(posSplit) == 3 and self.__isNumber(
                    posSplit[1]) and self.__isNumber(
                        posSplit[1]) and self.__isFacing(posSplit[2]):
                self.pac.Place(int(posSplit[0]), int(posSplit[1]), posSplit[2])
        #Return empty string by default
        return ""

    # Checks if user inputCommand for facing is valid
    def __isFacing(self, input):
        if input == self.pac.NORTH or input == self.pac.SOUTH or input == self.pac.EAST or input == self.pac.WEST:
            return True
        return False

    # Checks if user inputCommand for facing is valid
    def __isNumber(self, input):
        try:
            int(input)
            return True
        except ValueError:
            return False
 def test_failMoveY(self):
     expected = -1
     pac = Pacman()
     pac.Move()
     self.assertEqual(pac._Pacman__posY, expected)
 def test_test_moveOffWest(self):
     expected = "0,3,WEST"
     pac = Pacman()
     pac.Place(0, 3, pac.WEST)
     pac.Move()
     self.assertEqual(pac.Report(), expected)
 def test_test_moveOffSouth(self):
     expected = "3,0,SOUTH"
     pac = Pacman()
     pac.Place(3, 0, pac.SOUTH)
     pac.Move()
     self.assertEqual(pac.Report(), expected)
 def test_test_moveOffEast(self):
     expected = "5,3,EAST"
     pac = Pacman()
     pac.Place(5, 3, pac.EAST)
     pac.Move()
     self.assertEqual(pac.Report(), expected)
 def test_moveOffNorth(self):
     expected = "3,5,NORTH"
     pac = Pacman()
     pac.Place(3, 5, pac.NORTH)
     pac.Move()
     self.assertEqual(pac.Report(), expected)