1 // Copyright (C) 2008-2012 Colin MacDonald
\r
2 // No rights reserved: this software is in the public domain.
\r
4 /** This test verifies that position2d and vector2d are interchangeable,
\r
5 and that they can convert from dimension2d */
\r
7 #include "testUtils.h"
\r
10 using namespace core;
\r
13 template <class DIMENSION, class VECTOR, class POSITION, class T>
\r
14 static bool doTest(void)
\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
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
29 dimension = (T)2 * position;
\r
30 result &= (dimension == VECTOR(2 * (T)99.9, 2 * (T)99.9));
\r
34 result &= (dimension == POSITION((T)99.9, (T)99.9));
\r
37 dimension += vector;
\r
38 result &= (dimension == VECTOR(2 * (T)99.9, 2 * (T)99.9));
\r
41 dimension -= position;
\r
42 result &= (dimension == POSITION((T)99.9, (T)99.9));
\r
45 position = dimension;
\r
46 result &= (position == VECTOR((T)99.9, (T)99.9));
\r
50 result &= (vector == POSITION(2 * (T)99.9, 2 * (T)99.9));
\r
54 result &= (vector == dimension);
\r
58 result &= (position == VECTOR((T)3.5 * (T)99.9, (T)3.5 * (T)99.9));
\r
61 vector += dimension;
\r
62 result &= (vector == VECTOR(2 * (T)99.9, 2 * (T)99.9));
\r
68 bool vectorPositionDimension2d(void)
\r
72 logTestString("vector,position,dimension test with s32\n\n");
\r
73 result &= doTest<dimension2di, vector2di, position2di, s32>();
\r
75 logTestString("tests passed\n\n");
\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
81 logTestString("tests passed\n\n");
\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
87 logTestString("tests passed\n\n");
\r
89 logTestString("\ntests failed\n\n");
\r