示例#1
0
def test_addition_operator():
    """Addition operator."""
    my_coordinate = Coordinate2d(3.0, 4.0)
    my_other_coordinate = Coordinate2d(5.0, 7.0)
    sum_coordinate = my_coordinate + my_other_coordinate
    assert (sum_coordinate.get_x() == 8.0)
    assert (sum_coordinate.get_y() == 11.0)
示例#2
0
def test_subtraction_operator():
    """Subtraction operator."""
    my_coordinate = Coordinate2d(3.0, 4.0)
    my_other_coordinate = Coordinate2d(5.0, 7.0)
    difference = my_coordinate - my_other_coordinate
    assert (difference.get_x() == -2.0)
    assert (difference.get_y() == -3.0)
def test_update_step():
    """Verify update step."""
    initial_position = Coordinate2d(0, 0)
    initial_speed = Coordinate2d(3, 4)
    sample_time = 0.1
    base_model = TrueModel(initial_position, initial_speed, sample_time)
    acceleration = Coordinate2d(0, 0)
    base_model.update_state(acceleration)
    new_state = base_model.get_state()
    assert abs(new_state[0] - 0.3) < 1e-8
    assert (new_state[1] == 3)
    assert abs(new_state[2] - 0.4) < 1e-8
    assert (new_state[3] == 4)
def test_set_state():
    """Verify we set the state correctly."""
    input_data = create_input_data()
    base_model = TrueModel(input_data['position'], input_data['speed'],
                           input_data['sample_time'])
    state = [0, 1, 2, 3]
    base_model.set_state(state)
    new_state = base_model.get_state()
    for idx in range(len(state)):
        assert (state[idx] == new_state[idx])

    assert (base_model.get_position() == Coordinate2d(0, 2))
    assert (base_model.get_speed() == Coordinate2d(1, 3))
示例#5
0
 def update_state(self, acceleration):
     """Update state of the system."""
     new_data = []
     for idx in (0, 1):
         new_data.append(
             self.__update_single_coordinate(
                 self.get_position().get_idx(idx),
                 self.get_speed().get_idx(idx), acceleration.get_idx(idx)))
     new_position_x = new_data[0][0]
     new_speed_x = new_data[0][1]
     new_position_y = new_data[1][0]
     new_speed_y = new_data[1][1]
     self.__position = Coordinate2d(new_position_x, new_position_y)
     self.__speed = Coordinate2d(new_speed_x, new_speed_y)
示例#6
0
def test_base():
    """Base test."""
    my_coordinate = Coordinate2d(3.0, 4.0)
    assert (my_coordinate.get_x() == 3.0)
    assert (my_coordinate.get_y() == 4.0)
    assert (my_coordinate.get_idx(0) == 3.0)
    assert (my_coordinate.get_idx(1) == 4.0)
def test_update_step_acceleration():
    """Verify update step with non zero acceleration."""
    initial_position = Coordinate2d(0, 0)
    initial_speed = Coordinate2d(0, 0)
    sample_time = 0.1
    base_model = TrueModel(initial_position, initial_speed, sample_time)

    for iteration in range(5):
        acceleration = Coordinate2d(1 * iteration, 2 * iteration)
        current_position = base_model.get_position()
        current_speed = base_model.get_speed()
        base_model.update_state(acceleration)
        new_state = base_model.get_state()
        expected_state = compute_new_state(current_position, current_speed,
                                           acceleration, sample_time)

        assert all([abs(new_state[i] - expected_state[i]) < 1e-8]
                   for i in range(len(new_state)))
def create_input_data():
    """Utility function for creating input data."""
    position = Coordinate2d(3.0, 4.0)
    speed = Coordinate2d(2.0, 5.0)
    sample_time = 0.1
    return {'position': position, 'speed': speed, 'sample_time': sample_time}
示例#9
0
def test_equality():
    """Equal and not equal operators."""
    my_coordinate = Coordinate2d(3.0, 4.0)
    assert (my_coordinate == Coordinate2d(3.0, 4.0))
    assert (my_coordinate != Coordinate2d(3.0, 3.0))
    assert (my_coordinate != Coordinate2d(4.0, 4.0))
示例#10
0
def test_negative_operator():
    """Negative operator."""
    my_coordinate = Coordinate2d(3.0, 4.0)
    negative_coordinate = -my_coordinate
    assert (negative_coordinate.get_x() == -3.0)
    assert (negative_coordinate.get_y() == -4.0)
示例#11
0
 def set_state(self, state):
     """Set internal state of the system."""
     self.__position = \
         Coordinate2d(state[0], state[2])
     self.__speed = \
         Coordinate2d(state[1], state[3])