]> git.lizzy.rs Git - irrlicht.git/blob - tests/vectorPositionDimension2d.cpp
Fix bug introduced in last merge from svn trunk
[irrlicht.git] / tests / vectorPositionDimension2d.cpp
1 // Copyright (C) 2008-2012 Colin MacDonald\r
2 // No rights reserved: this software is in the public domain.\r
3 \r
4 /** This test verifies that position2d and vector2d are interchangeable,\r
5         and that they can convert from dimension2d */\r
6 \r
7 #include "testUtils.h"\r
8 \r
9 using namespace irr;\r
10 using namespace core;\r
11 \r
12 \r
13 template <class DIMENSION, class VECTOR, class POSITION, class T>\r
14 static bool doTest(void)\r
15 {\r
16         bool result = true;\r
17 \r
18         DIMENSION dimension((T)99.9, (T)99.9);\r
19         VECTOR vector(dimension);\r
20         POSITION position(vector);\r
21         DIMENSION dimension2(vector);\r
22 \r
23         result &= (vector == position);\r
24         result &= (vector == dimension); // The conversion should be explicit.\r
25         result &= (dimension2 == position);\r
26         result &= (position == POSITION((T)99.9, (T)99.9));\r
27         assert_log(result);\r
28 \r
29         dimension = (T)2 * position;\r
30         result &= (dimension == VECTOR(2 * (T)99.9, 2 * (T)99.9));\r
31         assert_log(result);\r
32 \r
33         dimension /= (T)2;\r
34         result &= (dimension == POSITION((T)99.9, (T)99.9));\r
35         assert_log(result);\r
36 \r
37         dimension += vector;\r
38         result &= (dimension == VECTOR(2 * (T)99.9, 2 * (T)99.9));\r
39         assert_log(result);\r
40 \r
41         dimension -= position;\r
42         result &= (dimension == POSITION((T)99.9, (T)99.9));\r
43         assert_log(result);\r
44 \r
45         position = dimension;\r
46         result &= (position == VECTOR((T)99.9, (T)99.9));\r
47         assert_log(result);\r
48 \r
49         vector += position;\r
50         result &= (vector == POSITION(2 * (T)99.9, 2 * (T)99.9));\r
51         assert_log(result);\r
52 \r
53         vector -= position;\r
54         result &= (vector == dimension);\r
55         assert_log(result);\r
56 \r
57         position *= (T)3.5;\r
58         result &= (position == VECTOR((T)3.5 * (T)99.9, (T)3.5 * (T)99.9));\r
59         assert_log(result);\r
60 \r
61         vector += dimension;\r
62         result &= (vector == VECTOR(2 * (T)99.9, 2 * (T)99.9));\r
63         assert_log(result);\r
64 \r
65         return result;\r
66 }\r
67 \r
68 bool vectorPositionDimension2d(void)\r
69 {\r
70         bool result = true;\r
71 \r
72         logTestString("vector,position,dimension test with s32\n\n");\r
73         result &= doTest<dimension2di, vector2di, position2di, s32>();\r
74         if (result)\r
75                 logTestString("tests passed\n\n");\r
76         else\r
77                 logTestString("\ntests failed\n\n");\r
78         logTestString("vector,position,dimension test with f32\n\n");\r
79         result &= doTest<dimension2df, vector2df, position2df, f32>();\r
80         if (result)\r
81                 logTestString("tests passed\n\n");\r
82         else\r
83                 logTestString("\ntests failed\n\n");\r
84         logTestString("vector,position,dimension test with f64\n\n");\r
85         result &= doTest<dimension2d<f64>, vector2d<f64>, position2d<f64>, f64>();\r
86         if (result)\r
87                 logTestString("tests passed\n\n");\r
88         else\r
89                 logTestString("\ntests failed\n\n");\r
90 \r
91         return result;\r
92 }\r
93 \r