def testDistanceToBoundaries(self):
    universe = OneDUniverse(debugSensor=True, debugMotor=True,
                            nSensor=100, wSensor=5,
                            nMotor=25, wMotor=5)
    world = OneDWorld(universe, [2, 0, 5, 15, 10])
    agent = RandomOneDAgent(world, 2)
    self.assertEqual(agent.distanceToBoundaries(), (2, 2))

    agent.move(-2)
    self.assertEqual(agent.distanceToBoundaries(), (0, 4))

    agent.move(2)
    agent.move(2)
    self.assertEqual(agent.distanceToBoundaries(), (4, 0))
  def testChooseMotorValue(self):
    universe = OneDUniverse(nSensor=100, wSensor=5,
                            nMotor=105, wMotor=5)
    world = OneDWorld(universe, [2, 0, 5, 15, 10])
    agent = RandomOneDAgent(world, 2, possibleMotorValues=set(xrange(-10, 10)))

    for _ in range(100):
      motorValue = agent.chooseMotorValue()
      self.assertTrue(-2 <= motorValue <= 2)  # bounded by size of world

    agent.move(-2)

    for _ in range(100):
      motorValue = agent.chooseMotorValue()
      self.assertTrue(0 <= motorValue <= 4)  # bounded by size of world
    def testChooseMotorValue(self):
        universe = OneDUniverse(nSensor=100, wSensor=5, nMotor=105, wMotor=5)
        world = OneDWorld(universe, [2, 0, 5, 15, 10])
        agent = RandomOneDAgent(world,
                                2,
                                possibleMotorValues=set(xrange(-10, 10)))

        for _ in range(100):
            motorValue = agent.chooseMotorValue()
            self.assertTrue(-2 <= motorValue <= 2)  # bounded by size of world

        agent.move(-2)

        for _ in range(100):
            motorValue = agent.chooseMotorValue()
            self.assertTrue(0 <= motorValue <= 4)  # bounded by size of world
  def testMotion(self):
    universe = OneDUniverse(debugSensor=True, debugMotor=True,
                            nSensor=100, wSensor=5,
                            nMotor=100, wMotor=20)
    world = OneDWorld(universe, [2, 0, 5, 15, 10])
    agent = RandomOneDAgent(world, 2)

    self.assertEqual(set(xrange(25, 30)), agent.sense())

    self.assertEqual(agent.move(1), set(xrange(60, 80)))
    self.assertEqual(set(xrange(75, 80)), agent.sense())

    self.assertEqual(agent.move(-2), set(xrange(0, 20)))
    self.assertEqual(set(xrange(0, 5)), agent.sense())

    self.assertEqual(agent.move(0), set(xrange(40, 60)))
    self.assertEqual(set(xrange(0, 5)), agent.sense())
    def testDistanceToBoundaries(self):
        universe = OneDUniverse(debugSensor=True,
                                debugMotor=True,
                                nSensor=100,
                                wSensor=5,
                                nMotor=25,
                                wMotor=5)
        world = OneDWorld(universe, [2, 0, 5, 15, 10])
        agent = RandomOneDAgent(world, 2)
        self.assertEqual(agent.distanceToBoundaries(), (2, 2))

        agent.move(-2)
        self.assertEqual(agent.distanceToBoundaries(), (0, 4))

        agent.move(2)
        agent.move(2)
        self.assertEqual(agent.distanceToBoundaries(), (4, 0))
    def testMotion(self):
        universe = OneDUniverse(debugSensor=True,
                                debugMotor=True,
                                nSensor=100,
                                wSensor=5,
                                nMotor=100,
                                wMotor=20)
        world = OneDWorld(universe, [2, 0, 5, 15, 10])
        agent = RandomOneDAgent(world, 2)

        self.assertEqual(set(xrange(25, 30)), agent.sense())

        self.assertEqual(agent.move(1), set(xrange(60, 80)))
        self.assertEqual(set(xrange(75, 80)), agent.sense())

        self.assertEqual(agent.move(-2), set(xrange(0, 20)))
        self.assertEqual(set(xrange(0, 5)), agent.sense())

        self.assertEqual(agent.move(0), set(xrange(40, 60)))
        self.assertEqual(set(xrange(0, 5)), agent.sense())