Develop and Download Open Source Software

Browse Subversion Repository

Contents of /coordinateCtrl/TestCoordinateCtrl.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 279 - (show annotations) (download) (as text)
Wed Mar 12 05:28:19 2008 UTC (16 years, 2 months ago) by satofumi
File MIME type: text/x-c++src
File size: 3818 byte(s)
adjust tab index
1 /*!
2 \file
3 \brief CoordinateCtrl ‚̃eƒXƒg
4
5 \author Satofumi KAMIMURA
6
7 $Id$
8 */
9
10 #include "TestCoordinateCtrl.h"
11 #include "CoordinateCtrl.h"
12 #include "MathUtils.h"
13
14
15 CPPUNIT_TEST_SUITE_REGISTRATION(TestCoordinateCtrl);
16 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestCoordinateCtrl,
17 "TestCoordinateCtrl");
18
19 using namespace beego;
20
21
22 void TestCoordinateCtrl::isActiveTest(void) {
23
24 CoordinateCtrl* crd = new CoordinateCtrl;
25
26 bool active = CoordinateCtrl::isActive(crd);
27 CPPUNIT_ASSERT_EQUAL(true, active);
28
29 delete crd;
30 active = CoordinateCtrl::isActive(crd);
31 CPPUNIT_ASSERT_EQUAL(false, active);
32 }
33
34
35 void TestCoordinateCtrl::setOriginTest(void) {
36
37 CoordinateCtrl crd;
38
39 CoordinateCtrl* parent = crd.getParent();
40 CPPUNIT_ASSERT_EQUAL(static_cast<CoordinateCtrl*>(NULL), parent);
41
42 CoordinateCtrl crd2;
43 crd.setOrigin(&crd2, 0, 0, rad(0.0));
44
45 parent = crd.getParent();
46 CPPUNIT_ASSERT_EQUAL(&crd2, parent);
47 }
48
49
50 void TestCoordinateCtrl::getPositionTest(void) {
51
52 CoordinateCtrl crd_1, crd_2, crd_3;
53 crd_3.setOrigin(&crd_2, 1, 1, rad(0.0));
54 crd_2.setOrigin(&crd_1, 1, 1, rad(0.0));
55
56 Position<int> position;
57 bool valid = crd_1.getPosition(&position, &crd_2, 10, 10, rad(0.0));
58 CPPUNIT_ASSERT_EQUAL(true, valid);
59 CPPUNIT_ASSERT_EQUAL(11, position.x);
60 CPPUNIT_ASSERT_EQUAL(11, position.y);
61
62 valid = crd_1.getPosition(&position, &crd_3, 10, 10, rad(0.0));
63 CPPUNIT_ASSERT_EQUAL(true, valid);
64 CPPUNIT_ASSERT_EQUAL(12, position.x);
65 CPPUNIT_ASSERT_EQUAL(12, position.y);
66
67 valid = crd_3.getPosition(&position, &crd_1, 10, 10, rad(0.0));
68 CPPUNIT_ASSERT_EQUAL(true, valid);
69 CPPUNIT_ASSERT_EQUAL(8, position.x);
70 CPPUNIT_ASSERT_EQUAL(8, position.y);
71
72 valid = crd_3.getPosition(&position, &crd_2, 10, 10, rad(0.0));
73 CPPUNIT_ASSERT_EQUAL(true, valid);
74 CPPUNIT_ASSERT_EQUAL(9, position.x);
75 CPPUNIT_ASSERT_EQUAL(9, position.y);
76
77 valid = crd_1.getPosition(&position, &crd_1, 10, 10, rad(0.0));
78 CPPUNIT_ASSERT_EQUAL(true, valid);
79 CPPUNIT_ASSERT_EQUAL(10, position.x);
80 CPPUNIT_ASSERT_EQUAL(10, position.y);
81
82 // Žqƒm�[ƒh‚ð‚Q‚Â�ì‚é
83 CoordinateCtrl crd_4;
84 valid = crd_1.getPosition(&position, &crd_4, 0, 0, rad(0.0));
85 CPPUNIT_ASSERT_EQUAL(false, valid);
86
87 crd_4.setOrigin(&crd_1, -1, -1, rad(0.0));
88 valid = crd_4.getPosition(&position, &crd_3, 10, 10, rad(0.0));
89 CPPUNIT_ASSERT_EQUAL(true, valid);
90 CPPUNIT_ASSERT_EQUAL(13, position.x);
91 CPPUNIT_ASSERT_EQUAL(13, position.y);
92 }
93
94
95 void TestCoordinateCtrl::rotateConvertTest(void) {
96
97 // ‰ñ“]‚Ì‚Ý
98 CoordinateCtrl parent;
99 CoordinateCtrl local;
100 local.setOrigin(&parent, 0, 0, rad(M_PI/2.0));
101
102 Position<int> position;
103 bool valid = local.getPosition(&position, &local, 0, 0, rad(0.0));
104 CPPUNIT_ASSERT_EQUAL(true, valid);
105 CPPUNIT_ASSERT_EQUAL(0.0, position.angle.to_rad());
106
107 valid = local.getPosition(&position, &parent, 0, 0, rad(0.0));
108 CPPUNIT_ASSERT_EQUAL(true, valid);
109 CPPUNIT_ASSERT_EQUAL(-M_PI/2.0, position.angle.to_rad());
110
111 // •½�sˆÚ“®‚Ɖñ“]
112 local.setOrigin(&parent, 20, 10, rad(M_PI/2.0));
113
114 valid = parent.getPosition(&position, &local, 0, 0, rad(0.0));
115 CPPUNIT_ASSERT_EQUAL(true, valid);
116 CPPUNIT_ASSERT_EQUAL(20, position.x);
117 CPPUNIT_ASSERT_EQUAL(10, position.y);
118 CPPUNIT_ASSERT_EQUAL(M_PI/2.0, position.angle.to_rad());
119
120 valid = local.getPosition(&position, &parent, 0, 0, rad(0.0));
121 CPPUNIT_ASSERT_EQUAL(true, valid);
122 CPPUNIT_ASSERT_EQUAL(-10, position.x);
123 CPPUNIT_ASSERT_DOUBLES_EQUAL(20, position.y, 1.0);
124 CPPUNIT_ASSERT_EQUAL(-M_PI/2.0, position.angle.to_rad());
125
126 valid = parent.getPosition(&position, &local, 100, 30, rad(M_PI/2.0));
127 CPPUNIT_ASSERT_EQUAL(true, valid);
128 CPPUNIT_ASSERT_DOUBLES_EQUAL(-10, position.x, 1.0);
129 CPPUNIT_ASSERT_EQUAL(110, position.y);
130 CPPUNIT_ASSERT_EQUAL(M_PI, position.angle.to_rad());
131 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26