OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <errno.h> | 5 #include <errno.h> |
6 #include <fcntl.h> | 6 #include <fcntl.h> |
7 #include <linux/input.h> | 7 #include <linux/input.h> |
8 #include <unistd.h> | 8 #include <unistd.h> |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 dev->ReadNow(); | 172 dev->ReadNow(); |
173 EXPECT_EQ(1u, dev->size()); | 173 EXPECT_EQ(1u, dev->size()); |
174 | 174 |
175 ui::TouchEvent* event = dev->event(0); | 175 ui::TouchEvent* event = dev->event(0); |
176 EXPECT_FALSE(event == NULL); | 176 EXPECT_FALSE(event == NULL); |
177 | 177 |
178 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event->type()); | 178 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event->type()); |
179 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 179 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
180 EXPECT_EQ(42, event->x()); | 180 EXPECT_EQ(42, event->x()); |
181 EXPECT_EQ(51, event->y()); | 181 EXPECT_EQ(51, event->y()); |
182 EXPECT_EQ(684, event->touch_id()); | 182 EXPECT_EQ(0, event->touch_id()); |
183 EXPECT_FLOAT_EQ(1.5f, event->radius_x()); | 183 EXPECT_FLOAT_EQ(1.5f, event->radius_x()); |
184 EXPECT_FLOAT_EQ(.5f, event->force()); | 184 EXPECT_FLOAT_EQ(.5f, event->force()); |
185 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 185 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
186 } | 186 } |
187 | 187 |
188 TEST_F(TouchEventConverterEvdevTest, NoEvents) { | 188 TEST_F(TouchEventConverterEvdevTest, NoEvents) { |
189 ui::MockTouchEventConverterEvdev* dev = device(); | 189 ui::MockTouchEventConverterEvdev* dev = device(); |
190 dev->ConfigureReadMock(NULL, 0, 0); | 190 dev->ConfigureReadMock(NULL, 0, 0); |
191 EXPECT_EQ(0u, dev->size()); | 191 EXPECT_EQ(0u, dev->size()); |
192 } | 192 } |
(...skipping 27 matching lines...) Expand all Loading... |
220 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); | 220 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); |
221 dev->ReadNow(); | 221 dev->ReadNow(); |
222 EXPECT_EQ(2u, dev->size()); | 222 EXPECT_EQ(2u, dev->size()); |
223 ui::TouchEvent* event = dev->event(1); | 223 ui::TouchEvent* event = dev->event(1); |
224 EXPECT_FALSE(event == NULL); | 224 EXPECT_FALSE(event == NULL); |
225 | 225 |
226 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); | 226 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); |
227 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 227 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
228 EXPECT_EQ(42, event->x()); | 228 EXPECT_EQ(42, event->x()); |
229 EXPECT_EQ(43, event->y()); | 229 EXPECT_EQ(43, event->y()); |
230 EXPECT_EQ(684, event->touch_id()); | 230 EXPECT_EQ(0, event->touch_id()); |
231 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); | 231 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); |
232 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 232 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
233 | 233 |
234 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); | 234 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); |
235 dev->ReadNow(); | 235 dev->ReadNow(); |
236 EXPECT_EQ(3u, dev->size()); | 236 EXPECT_EQ(3u, dev->size()); |
237 event = dev->event(2); | 237 event = dev->event(2); |
238 EXPECT_FALSE(event == NULL); | 238 EXPECT_FALSE(event == NULL); |
239 | 239 |
240 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); | 240 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); |
241 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 241 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
242 EXPECT_EQ(42, event->x()); | 242 EXPECT_EQ(42, event->x()); |
243 EXPECT_EQ(42, event->y()); | 243 EXPECT_EQ(42, event->y()); |
244 EXPECT_EQ(684, event->touch_id()); | 244 EXPECT_EQ(0, event->touch_id()); |
245 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); | 245 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); |
246 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 246 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
247 } | 247 } |
248 | 248 |
249 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { | 249 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { |
250 ui::MockTouchEventConverterEvdev* dev = device(); | 250 ui::MockTouchEventConverterEvdev* dev = device(); |
251 | 251 |
252 struct input_event mock_kernel_queue_press[] = { | 252 struct input_event mock_kernel_queue_press[] = { |
253 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, | 253 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, |
254 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, | 254 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, |
(...skipping 16 matching lines...) Expand all Loading... |
271 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); | 271 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); |
272 dev->ReadNow(); | 272 dev->ReadNow(); |
273 EXPECT_EQ(2u, dev->size()); | 273 EXPECT_EQ(2u, dev->size()); |
274 event = dev->event(1); | 274 event = dev->event(1); |
275 EXPECT_FALSE(event == NULL); | 275 EXPECT_FALSE(event == NULL); |
276 | 276 |
277 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event->type()); | 277 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event->type()); |
278 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 278 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
279 EXPECT_EQ(42, event->x()); | 279 EXPECT_EQ(42, event->x()); |
280 EXPECT_EQ(51, event->y()); | 280 EXPECT_EQ(51, event->y()); |
281 EXPECT_EQ(684, event->touch_id()); | 281 EXPECT_EQ(0, event->touch_id()); |
282 EXPECT_FLOAT_EQ(.5f, event->force()); | 282 EXPECT_FLOAT_EQ(.5f, event->force()); |
283 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 283 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
284 } | 284 } |
285 | 285 |
286 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { | 286 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { |
287 ui::MockTouchEventConverterEvdev* dev = device(); | 287 ui::MockTouchEventConverterEvdev* dev = device(); |
288 | 288 |
289 ui::TouchEvent* ev0; | 289 ui::TouchEvent* ev0; |
290 ui::TouchEvent* ev1; | 290 ui::TouchEvent* ev1; |
291 | 291 |
(...skipping 30 matching lines...) Expand all Loading... |
322 dev->ReadNow(); | 322 dev->ReadNow(); |
323 EXPECT_EQ(4u, dev->size()); | 323 EXPECT_EQ(4u, dev->size()); |
324 ev0 = dev->event(2); | 324 ev0 = dev->event(2); |
325 ev1 = dev->event(3); | 325 ev1 = dev->event(3); |
326 | 326 |
327 // Move | 327 // Move |
328 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); | 328 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); |
329 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 329 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
330 EXPECT_EQ(40, ev0->x()); | 330 EXPECT_EQ(40, ev0->x()); |
331 EXPECT_EQ(51, ev0->y()); | 331 EXPECT_EQ(51, ev0->y()); |
332 EXPECT_EQ(684, ev0->touch_id()); | 332 EXPECT_EQ(0, ev0->touch_id()); |
333 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 333 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
334 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 334 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
335 | 335 |
336 // Press | 336 // Press |
337 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1->type()); | 337 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1->type()); |
338 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 338 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
339 EXPECT_EQ(101, ev1->x()); | 339 EXPECT_EQ(101, ev1->x()); |
340 EXPECT_EQ(102, ev1->y()); | 340 EXPECT_EQ(102, ev1->y()); |
341 EXPECT_EQ(686, ev1->touch_id()); | 341 EXPECT_EQ(1, ev1->touch_id()); |
342 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 342 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
343 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 343 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
344 | 344 |
345 // Stationary 0, Moves 1. | 345 // Stationary 0, Moves 1. |
346 struct input_event mock_kernel_queue_stationary0_move1[] = { | 346 struct input_event mock_kernel_queue_stationary0_move1[] = { |
347 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} | 347 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} |
348 }; | 348 }; |
349 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); | 349 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); |
350 dev->ReadNow(); | 350 dev->ReadNow(); |
351 EXPECT_EQ(5u, dev->size()); | 351 EXPECT_EQ(5u, dev->size()); |
352 ev1 = dev->event(4); | 352 ev1 = dev->event(4); |
353 | 353 |
354 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); | 354 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); |
355 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 355 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
356 EXPECT_EQ(40, ev1->x()); | 356 EXPECT_EQ(40, ev1->x()); |
357 EXPECT_EQ(102, ev1->y()); | 357 EXPECT_EQ(102, ev1->y()); |
358 EXPECT_EQ(686, ev1->touch_id()); | 358 EXPECT_EQ(1, ev1->touch_id()); |
359 | 359 |
360 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 360 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
361 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 361 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
362 | 362 |
363 // Move 0, stationary 1. | 363 // Move 0, stationary 1. |
364 struct input_event mock_kernel_queue_move0_stationary1[] = { | 364 struct input_event mock_kernel_queue_move0_stationary1[] = { |
365 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, | 365 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, |
366 {{0, 0}, EV_SYN, SYN_REPORT, 0} | 366 {{0, 0}, EV_SYN, SYN_REPORT, 0} |
367 }; | 367 }; |
368 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); | 368 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); |
369 dev->ReadNow(); | 369 dev->ReadNow(); |
370 EXPECT_EQ(6u, dev->size()); | 370 EXPECT_EQ(6u, dev->size()); |
371 ev0 = dev->event(5); | 371 ev0 = dev->event(5); |
372 | 372 |
373 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); | 373 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); |
374 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 374 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
375 EXPECT_EQ(39, ev0->x()); | 375 EXPECT_EQ(39, ev0->x()); |
376 EXPECT_EQ(51, ev0->y()); | 376 EXPECT_EQ(51, ev0->y()); |
377 EXPECT_EQ(684, ev0->touch_id()); | 377 EXPECT_EQ(0, ev0->touch_id()); |
378 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 378 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
379 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 379 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
380 | 380 |
381 // Release 0, move 1. | 381 // Release 0, move 1. |
382 struct input_event mock_kernel_queue_release0_move1[] = { | 382 struct input_event mock_kernel_queue_release0_move1[] = { |
383 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, | 383 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, |
384 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} | 384 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} |
385 }; | 385 }; |
386 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); | 386 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); |
387 dev->ReadNow(); | 387 dev->ReadNow(); |
388 EXPECT_EQ(8u, dev->size()); | 388 EXPECT_EQ(8u, dev->size()); |
389 ev0 = dev->event(6); | 389 ev0 = dev->event(6); |
390 ev1 = dev->event(7); | 390 ev1 = dev->event(7); |
391 | 391 |
392 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0->type()); | 392 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0->type()); |
393 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 393 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
394 EXPECT_EQ(39, ev0->x()); | 394 EXPECT_EQ(39, ev0->x()); |
395 EXPECT_EQ(51, ev0->y()); | 395 EXPECT_EQ(51, ev0->y()); |
396 EXPECT_EQ(684, ev0->touch_id()); | 396 EXPECT_EQ(0, ev0->touch_id()); |
397 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 397 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
398 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 398 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
399 | 399 |
400 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); | 400 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); |
401 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 401 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
402 EXPECT_EQ(38, ev1->x()); | 402 EXPECT_EQ(38, ev1->x()); |
403 EXPECT_EQ(102, ev1->y()); | 403 EXPECT_EQ(102, ev1->y()); |
404 EXPECT_EQ(686, ev1->touch_id()); | 404 EXPECT_EQ(1, ev1->touch_id()); |
405 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 405 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
406 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 406 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
407 | 407 |
408 // Release 1. | 408 // Release 1. |
409 struct input_event mock_kernel_queue_release1[] = { | 409 struct input_event mock_kernel_queue_release1[] = { |
410 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, | 410 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, |
411 }; | 411 }; |
412 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); | 412 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); |
413 dev->ReadNow(); | 413 dev->ReadNow(); |
414 EXPECT_EQ(9u, dev->size()); | 414 EXPECT_EQ(9u, dev->size()); |
415 ev1 = dev->event(8); | 415 ev1 = dev->event(8); |
416 | 416 |
417 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1->type()); | 417 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1->type()); |
418 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 418 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
419 EXPECT_EQ(38, ev1->x()); | 419 EXPECT_EQ(38, ev1->x()); |
420 EXPECT_EQ(102, ev1->y()); | 420 EXPECT_EQ(102, ev1->y()); |
421 EXPECT_EQ(686, ev1->touch_id()); | 421 EXPECT_EQ(1, ev1->touch_id()); |
422 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 422 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
423 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 423 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
424 } | 424 } |
425 | 425 |
426 TEST_F(TouchEventConverterEvdevTest, TypeA) { | 426 TEST_F(TouchEventConverterEvdevTest, TypeA) { |
427 ui::MockTouchEventConverterEvdev* dev = device(); | 427 ui::MockTouchEventConverterEvdev* dev = device(); |
428 | 428 |
429 struct input_event mock_kernel_queue_press0[] = { | 429 struct input_event mock_kernel_queue_press0[] = { |
430 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, | 430 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, |
431 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, | 431 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 dev->ReadNow(); | 508 dev->ReadNow(); |
509 | 509 |
510 const unsigned int kExpectedEventCount = 2; | 510 const unsigned int kExpectedEventCount = 2; |
511 EXPECT_EQ(kExpectedEventCount, dev->size()); | 511 EXPECT_EQ(kExpectedEventCount, dev->size()); |
512 if (kExpectedEventCount != dev->size()) | 512 if (kExpectedEventCount != dev->size()) |
513 return; | 513 return; |
514 | 514 |
515 ui::TouchEvent* ev0 = dev->event(0); | 515 ui::TouchEvent* ev0 = dev->event(0); |
516 ui::TouchEvent* ev1 = dev->event(1); | 516 ui::TouchEvent* ev1 = dev->event(1); |
517 | 517 |
518 EXPECT_EQ(100, ev0->touch_id()); | 518 EXPECT_EQ(0, ev0->touch_id()); |
519 EXPECT_EQ(999, ev0->x()); | 519 EXPECT_EQ(999, ev0->x()); |
520 EXPECT_EQ(888, ev0->y()); | 520 EXPECT_EQ(888, ev0->y()); |
521 EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); | 521 EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); |
522 | 522 |
523 EXPECT_EQ(200, ev1->touch_id()); | 523 EXPECT_EQ(1, ev1->touch_id()); |
524 EXPECT_EQ(777, ev1->x()); | 524 EXPECT_EQ(777, ev1->x()); |
525 EXPECT_EQ(666, ev1->y()); | 525 EXPECT_EQ(666, ev1->y()); |
526 EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); | 526 EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); |
527 } | 527 } |
OLD | NEW |