@Test
  public void testUpdateAltitude() {
    Engine[] engine = new Engine[2];
    GPS gps = new GPS();
    final double MAXRPM = 10000;
    engine[0].turnOn();
    engine[1].turnOn();
    engine[0] = new Engine(MAXRPM);
    engine[1] = new Engine(MAXRPM);

    gps.updateAltitude(20, 200, 100, 0.1);
    assertEquals(gps.getAltitude(), 0.0, 0.1);

    gps.updateAltitude(20, 200, 200, 0.1);
    assertEquals(gps.getAltitude(), 1.90011, 0.1);

    gps.updateAltitude(40, 400, 200, 0.1);
    assertEquals(gps.getAltitude(), 9.042196, 0.1);

    gps.updateAltitude(-30, 200, 100, 0.1);
    assertEquals(gps.getAltitude(), 6.264418, 0.1);

    try {
      gps.updateAltitude(-110, 400, 200, 0.1);
      fail();
    } catch (IllegalArgumentException e) {
      // Passed, caught the correct error
    }

    try {
      gps.updateAltitude(110, -400, 200, 0.1);
      fail();
    } catch (IllegalArgumentException e) {
      // Passed, caught the correct error
    }

    try {
      gps.updateAltitude(110, 400, 200, -0.1);
      fail();
    } catch (IllegalArgumentException e) {
      // Passed, caught the correct error
    }
  }