Пример #1
0
 def test_get_random_position(self):
     """Test get_random_position
         checks for distribution of positions and validity of positions
     """
     width, height, dirt_amount = (5, 10, 1)
     room = ps3.EmptyRoom(width, height, dirt_amount)
     sol_room = test.EmptyRoom(width, height, dirt_amount)
     freq_buckets = {}
     for i in range(50000):
         pos = room.get_random_position()
         # confirm from test that this is a valid position
         self.assertTrue(sol_room.is_position_valid(pos)) 
         try:
             x, y = pos.get_x(), pos.get_y()
         except AttributeError:
             self.fail("get_random_position returned {} which is not a Position".format(pos))
         self.assertTrue(0 <= x < width and 0 <= y < height,
                         "get_random_position returned {} which is not in [0, {}), [0, {})".format(pos,width,height))
         x0, y0 = int(x), int(y)
         freq_buckets[(x0, y0)] = freq_buckets.get((x0, y0), 0) + 1
     for t in xyrange(width, height):
         num_in_bucket = freq_buckets.get(t, 0)
         self.assertTrue(
             # This is a 99.7% confidence interval for a uniform
             # distribution. Fail if the total of any bucket falls outside
             # this range.
             865 < num_in_bucket < 1135,
             "The distribution of positions from get_random_position "
             "looks incorrect (it should be uniform)")
Пример #2
0
    def test_is_position_valid(self):
        """ Test is_position_valid
            this should be refactored as it's mostly a copy of is_position_in_room code        
        """
        width, height, dirt_amount = (3, 4, 2)
        room = ps3.EmptyRoom(width, height, dirt_amount)
        solution_room = test.EmptyRoom(width, height, dirt_amount)

        for x in [0.0, -0.1, width - 0.1, width, width + 0.1]:
            for y in [0.0, -0.1, height - 0.1, height, height + 0.1]:
                pos = test.Position(x, y)
                self.assertEquals(solution_room.is_position_valid(pos), room.is_position_valid(pos),
                             "student code and solution code disagree on whether position is valid"
                                  )
Пример #3
0
    def test_getset_robot_direction(self):
        """Test get_robot_direction and set_robot_direction"""
        # instantiate EmptyRoom from solutions for testing
        width, height, dirt_amount = (3, 4, 2)
        solution_room = test.EmptyRoom(width, height, dirt_amount)

        robots = [ps3.Robot(solution_room, 1.0, 1) for i in range(4)]
        directions = [1, 333, 105, 75, 74.3]
        for dir_index, robot in enumerate(robots):
            robot.set_robot_direction(directions[dir_index])
        for dir_index, robot in enumerate(robots):
            robot_dir = robot.get_robot_direction()
            self.assertEquals(robot_dir, directions[dir_index],
                              "Robot direction set or retrieved incorrectly: expected {}, got {}".format(directions[dir_index], robot_dir)
                              )
Пример #4
0
 def test_unimplemented_methods(self):
     """Test if student implemented methods in Robot abstract class that should not be implemented"""
     room = test.EmptyRoom(2,2,1)
     robot = ps3.Robot(room,1,1)
     self.assertRaises(NotImplementedError, robot.update_position_and_clean)