102 EXPECT_FLOAT_EQ(300.0f, DoOperator2(&engine, 100, 200,
PSOP_ADD));
103 EXPECT_FLOAT_EQ(-50.0f, DoOperator2(&engine, 100, 150,
PSOP_SUB));
104 EXPECT_FLOAT_EQ(600.0f, DoOperator2(&engine, 5, 120,
PSOP_MUL));
105 EXPECT_FLOAT_EQ(1.5f, DoOperator2(&engine, 15, 10,
PSOP_DIV));
106 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 15, 10,
PSOP_IDIV));
107 EXPECT_FLOAT_EQ(5.0f, DoOperator2(&engine, 15, 10,
PSOP_MOD));
108 EXPECT_FLOAT_EQ(5.0f, DoOperator1(&engine, -5,
PSOP_NEG));
109 EXPECT_FLOAT_EQ(5.0f, DoOperator1(&engine, -5,
PSOP_ABS));
127 float min_float =
std::numeric_limits<
float>::min();
129 float max_float =
std::numeric_limits<
float>::max();
130 EXPECT_FLOAT_EQ(1.0f, DoOperator1(&engine, min_float,
PSOP_CEILING));
131 EXPECT_FLOAT_EQ(max_float, DoOperator1(&engine, max_float,
PSOP_CEILING));
132 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, -min_float,
PSOP_CEILING));
133 EXPECT_FLOAT_EQ(-max_float, DoOperator1(&engine, -max_float,
PSOP_CEILING));
134 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, -0.9f,
PSOP_CEILING));
135 EXPECT_FLOAT_EQ(1.0f, DoOperator1(&engine, 0.0000000001f,
PSOP_CEILING));
136 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_CEILING));
137 EXPECT_FLOAT_EQ(3.0f, DoOperator1(&engine, 2.3f,
PSOP_CEILING));
138 EXPECT_FLOAT_EQ(4.0f, DoOperator1(&engine, 3.8f,
PSOP_CEILING));
139 EXPECT_FLOAT_EQ(6.0f, DoOperator1(&engine, 5.5f,
PSOP_CEILING));
140 EXPECT_FLOAT_EQ(-2.0f, DoOperator1(&engine, -2.3f,
PSOP_CEILING));
141 EXPECT_FLOAT_EQ(-3.0f, DoOperator1(&engine, -3.8f,
PSOP_CEILING));
142 EXPECT_FLOAT_EQ(-5.0f, DoOperator1(&engine, -5.5f,
PSOP_CEILING));
149 float min_float =
std::numeric_limits<
float>::min();
151 float max_float =
std::numeric_limits<
float>::max();
152 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, min_float,
PSOP_FLOOR));
153 EXPECT_FLOAT_EQ(max_float, DoOperator1(&engine, max_float,
PSOP_FLOOR));
154 EXPECT_FLOAT_EQ(-1.0f, DoOperator1(&engine, -min_float,
PSOP_FLOOR));
155 EXPECT_FLOAT_EQ(-max_float, DoOperator1(&engine, -max_float,
PSOP_FLOOR));
156 EXPECT_FLOAT_EQ(5.0f, DoOperator1(&engine, 5.9f,
PSOP_FLOOR));
157 EXPECT_FLOAT_EQ(-4.0f, DoOperator1(&engine, -4.0000000001f,
PSOP_FLOOR));
158 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_FLOOR));
159 EXPECT_FLOAT_EQ(-1.0f, DoOperator1(&engine, -0.9f,
PSOP_FLOOR));
160 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0000000001f,
PSOP_FLOOR));
161 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_FLOOR));
162 EXPECT_FLOAT_EQ(2.0f, DoOperator1(&engine, 2.3f,
PSOP_FLOOR));
163 EXPECT_FLOAT_EQ(3.0f, DoOperator1(&engine, 3.8f,
PSOP_FLOOR));
164 EXPECT_FLOAT_EQ(5.0f, DoOperator1(&engine, 5.5f,
PSOP_FLOOR));
165 EXPECT_FLOAT_EQ(-3.0f, DoOperator1(&engine, -2.3f,
PSOP_FLOOR));
166 EXPECT_FLOAT_EQ(-4.0f, DoOperator1(&engine, -3.8f,
PSOP_FLOOR));
167 EXPECT_FLOAT_EQ(-6.0f, DoOperator1(&engine, -5.5f,
PSOP_FLOOR));
173 EXPECT_FLOAT_EQ(6.0f, DoOperator1(&engine, 5.9f,
PSOP_ROUND));
174 EXPECT_FLOAT_EQ(-4.0f, DoOperator1(&engine, -4.0000000001f,
PSOP_ROUND));
175 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_ROUND));
176 EXPECT_FLOAT_EQ(-1.0f, DoOperator1(&engine, -0.9f,
PSOP_ROUND));
177 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0000000001f,
PSOP_ROUND));
178 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_ROUND));
180 float min_float =
std::numeric_limits<
float>::min();
182 float max_float =
std::numeric_limits<
float>::max();
183 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, min_float,
PSOP_ROUND));
184 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, -min_float,
PSOP_ROUND));
185 EXPECT_FLOAT_EQ(max_float, DoOperator1(&engine, max_float,
PSOP_ROUND));
186 EXPECT_FLOAT_EQ(-max_float, DoOperator1(&engine, -max_float,
PSOP_ROUND));
187 EXPECT_FLOAT_EQ(2.0f, DoOperator1(&engine, 2.3f,
PSOP_ROUND));
188 EXPECT_FLOAT_EQ(4.0f, DoOperator1(&engine, 3.8f,
PSOP_ROUND));
189 EXPECT_FLOAT_EQ(6.0f, DoOperator1(&engine, 5.5f,
PSOP_ROUND));
190 EXPECT_FLOAT_EQ(-2.0f, DoOperator1(&engine, -2.3f,
PSOP_ROUND));
191 EXPECT_FLOAT_EQ(-4.0f, DoOperator1(&engine, -3.8f,
PSOP_ROUND));
192 EXPECT_FLOAT_EQ(-5.0f, DoOperator1(&engine, -5.5f,
PSOP_ROUND));
198 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, -0.9f,
PSOP_TRUNCATE));
199 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0000000001f,
PSOP_TRUNCATE));
200 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 0.0f,
PSOP_TRUNCATE));
202 float min_float =
std::numeric_limits<
float>::min();
203 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, min_float,
PSOP_TRUNCATE));
204 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, -min_float,
PSOP_TRUNCATE));
205 EXPECT_FLOAT_EQ(2.0f, DoOperator1(&engine, 2.3f,
PSOP_TRUNCATE));
206 EXPECT_FLOAT_EQ(3.0f, DoOperator1(&engine, 3.8f,
PSOP_TRUNCATE));
207 EXPECT_FLOAT_EQ(5.0f, DoOperator1(&engine, 5.5f,
PSOP_TRUNCATE));
208 EXPECT_FLOAT_EQ(-2.0f, DoOperator1(&engine, -2.3f,
PSOP_TRUNCATE));
209 EXPECT_FLOAT_EQ(-3.0f, DoOperator1(&engine, -3.8f,
PSOP_TRUNCATE));
210 EXPECT_FLOAT_EQ(-5.0f, DoOperator1(&engine, -5.5f,
PSOP_TRUNCATE));
215 float max_int =
static_cast<
float>(
std::numeric_limits<
int>::max());
216 EXPECT_FLOAT_EQ(-max_int,
223 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_EQ));
224 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_EQ));
225 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_EQ));
226 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_EQ));
228 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_NE));
229 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_NE));
230 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_NE));
231 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_NE));
233 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_GT));
234 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_GT));
235 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_GT));
236 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_GT));
238 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_GE));
239 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_GE));
240 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_GE));
241 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_GE));
243 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_LT));
244 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_LT));
245 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_LT));
246 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_LT));
248 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_LE));
249 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_LE));
250 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 255.0f, 1.0f,
PSOP_LE));
251 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, -1.0f, 0.0f,
PSOP_LE));
257 EXPECT_FLOAT_EQ(1.0f, DoOperator0(&engine,
PSOP_TRUE));
258 EXPECT_FLOAT_EQ(0.0f, DoOperator0(&engine,
PSOP_FALSE));
260 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_AND));
261 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_AND));
262 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 1.0f, 0.0f,
PSOP_AND));
263 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 1.0f, 1.0f,
PSOP_AND));
265 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_OR));
266 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_OR));
267 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 1.0f, 0.0f,
PSOP_OR));
268 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 1.0f, 1.0f,
PSOP_OR));
270 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 0.0f, 0.0f,
PSOP_XOR));
271 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 0.0f, 1.0f,
PSOP_XOR));
272 EXPECT_FLOAT_EQ(1.0f, DoOperator2(&engine, 1.0f, 0.0f,
PSOP_XOR));
273 EXPECT_FLOAT_EQ(0.0f, DoOperator2(&engine, 1.0f, 1.0f,
PSOP_XOR));
275 EXPECT_FLOAT_EQ(1.0f, DoOperator1(&engine, 0.0f,
PSOP_NOT));
276 EXPECT_FLOAT_EQ(0.0f, DoOperator1(&engine, 1.0f,
PSOP_NOT));
282 EXPECT_FLOAT_EQ(1.4142135f, DoOperator1(&engine, 2.0f,
PSOP_SQRT));
283 EXPECT_FLOAT_EQ(0.8660254f, DoOperator1(&engine, 60.0f,
PSOP_SIN));
284 EXPECT_FLOAT_EQ(0.5f, DoOperator1(&engine, 60.0f,
PSOP_COS));
285 EXPECT_FLOAT_EQ(45.0f, DoOperator2(&engine, 1.0f, 1.0f,
PSOP_ATAN));
286 EXPECT_FLOAT_EQ(1000.0f, DoOperator2(&engine, 10.0f, 3.0f,
PSOP_EXP));
287 EXPECT_FLOAT_EQ(3.0f, DoOperator1(&engine, 1000.0f,
PSOP_LOG));
288 EXPECT_FLOAT_EQ(2.302585f, DoOperator1(&engine, 10.0f,
PSOP_LN));