Renderer, ...: use PixelRect::GetCenter()
[xcsoar.git] / test / src / test_aat.cpp
blob5612f2627aea296aa8e464c7755d609754335af5
1 /* Copyright_License {
3 XCSoar Glide Computer - http://www.xcsoar.org/
4 Copyright (C) 2000-2013 The XCSoar Project
5 A detailed list of copyright holders can be found in the file "AUTHORS".
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; either version 2
10 of the License, or (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 #include "harness_flight.hpp"
24 #include "harness_wind.hpp"
26 static bool
27 test_aat(int test_num, int n_wind)
29 // test whether flying to targets in an AAT task produces
30 // elapsed (finish) times equal to desired time with 1.5% tolerance
32 TestFlightResult result = test_flight(test_num, n_wind);
33 bool fine = result.result;
34 double min_time = (double)aat_min_time(test_num) + 300.0;
35 // 300 second offset is default 5 minute margin provided in TaskBehaviour
37 const double t_ratio = fabs(result.time_elapsed / min_time - 1.0);
38 fine &= (t_ratio < 0.015);
39 if (!fine || verbose)
40 printf("# time ratio error (elapsed/target) %g\n", t_ratio);
42 return fine;
45 int main(int argc, char** argv)
47 // default arguments
48 autopilot_parms.SetIdeal();
50 if (!ParseArgs(argc,argv)) {
51 return 0;
54 #define NUM_FLIGHT 2
56 plan_tests(NUM_FLIGHT*2);
58 for (int i=0; i<NUM_FLIGHT; i++) {
59 unsigned k = rand()%NUM_WIND;
60 ok (test_aat(2,k), GetTestName("target ",2,k),0);
62 for (int i=0; i<NUM_FLIGHT; i++) {
63 unsigned k = rand()%NUM_WIND;
64 ok (test_aat(0,k), GetTestName("target ",0,k),0);
66 return exit_status();