1 /*****************************************************************************\
3 * Name : test_rectangle_warper *
4 * Author : Chris Koeritz *
8 * Tests the rectangle warper class. *
10 *******************************************************************************
11 * Copyright (c) 1993-$now By Author. This program is free software; you can *
12 * redistribute it and/or modify it under the terms of the GNU General Public *
13 * License as published by the Free Software Foundation; either version 2 of *
14 * the License or (at your option) any later version. This is online at: *
15 * http://www.fsf.org/copyleft/gpl.html *
16 * Please send any updates to: fred@gruntose.com *
17 \*****************************************************************************/
19 #include <application/hoople_main.h>
20 #include <basis/astring.h>
21 #include <basis/functions.h>
22 #include <basis/guards.h>
23 #include <geometric/warper.h>
24 #include <structures/static_memory_gremlin.h>
25 #include <unit_test/unit_base.h>
27 using namespace application;
28 using namespace basis;
29 using namespace geometric;
30 using namespace loggers;
31 using namespace structures;
32 using namespace unit_test;
33 using namespace geometric;
35 class test_rectangle_warper : public virtual unit_base, virtual public application_shell
38 test_rectangle_warper() {}
39 DEFINE_CLASS_NAME("test_rectangle_warper");
40 virtual int execute();
43 int test_rectangle_warper::execute()
46 rectangle<double> inner(-20, 0, -60, 30);
47 rectangle<double> outer(20, 30, 0, 0);
48 rectangle_warper<double> ito(inner, outer, rectangle_warper<double>::TOP_LEFT,
49 rectangle_warper<double>::BOTTOM_RIGHT);
50 //LOG(astring("inner to outer warper is: " + ito.text_form()));
52 rectangle<double> warped_inner(ito.to_system_2(inner));
53 //LOG(astring("warped inner becomes ") + warped_inner.text_form());
54 rectangle<double> warped_outer(ito.to_system_1(outer));
55 //LOG(astring(" and outer becomes ") + warped_outer.text_form());
56 ASSERT_FALSE( (warped_inner != outer) || (warped_outer != inner),
57 "systems should warp to each other correctly");
59 point<double> in_center(inner.center());
60 point<double> warp_in_center(ito.to_system_2(in_center));
61 point<double> out_center(outer.center());
62 point<double> warp_out_center(ito.to_system_1(out_center));
63 ASSERT_FALSE( (warp_out_center != inner.center()) || (warp_in_center != outer.center()),
64 "centers should warp to each other");
65 return final_report();
68 HOOPLE_MAIN(test_rectangle_warper, );