| 420 | } |
| 421 | |
| 422 | void TestStructOf() { |
| 423 | auto ty = struct_({field("float", type_)}); |
| 424 | |
| 425 | StructScalar struct_val({scalar_val_}, ty); |
| 426 | StructScalar struct_other_val({scalar_other_}, ty); |
| 427 | StructScalar struct_nan({scalar_nan_}, ty); |
| 428 | StructScalar struct_other_nan({scalar_other_nan_}, ty); |
| 429 | |
| 430 | EqualOptions options = EqualOptions::Defaults().atol(0.05); |
| 431 | ASSERT_FALSE(struct_val.Equals(struct_other_val, options)); |
| 432 | ASSERT_FALSE(struct_other_val.Equals(struct_val, options)); |
| 433 | ASSERT_FALSE(struct_nan.Equals(struct_val, options)); |
| 434 | ASSERT_FALSE(struct_nan.Equals(struct_nan, options)); |
| 435 | ASSERT_FALSE(struct_nan.Equals(struct_other_nan, options)); |
| 436 | ASSERT_FALSE(struct_val.ApproxEquals(struct_other_val, options)); |
| 437 | ASSERT_FALSE(struct_other_val.ApproxEquals(struct_val, options)); |
| 438 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_val, options)); |
| 439 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_nan, options)); |
| 440 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_other_nan, options)); |
| 441 | |
| 442 | options = options.atol(0.15); |
| 443 | ASSERT_TRUE(struct_val.Equals(struct_other_val, options)); |
| 444 | ASSERT_TRUE(struct_other_val.Equals(struct_val, options)); |
| 445 | ASSERT_FALSE(struct_nan.Equals(struct_val, options)); |
| 446 | ASSERT_FALSE(struct_nan.Equals(struct_nan, options)); |
| 447 | ASSERT_FALSE(struct_nan.Equals(struct_other_nan, options)); |
| 448 | ASSERT_TRUE(struct_val.ApproxEquals(struct_other_val, options)); |
| 449 | ASSERT_TRUE(struct_other_val.ApproxEquals(struct_val, options)); |
| 450 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_val, options)); |
| 451 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_nan, options)); |
| 452 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_other_nan, options)); |
| 453 | |
| 454 | options = options.nans_equal(true); |
| 455 | ASSERT_TRUE(struct_val.Equals(struct_other_val, options)); |
| 456 | ASSERT_TRUE(struct_other_val.Equals(struct_val, options)); |
| 457 | ASSERT_FALSE(struct_nan.Equals(struct_val, options)); |
| 458 | ASSERT_TRUE(struct_nan.Equals(struct_nan, options)); |
| 459 | ASSERT_TRUE(struct_nan.Equals(struct_other_nan, options)); |
| 460 | ASSERT_TRUE(struct_val.ApproxEquals(struct_other_val, options)); |
| 461 | ASSERT_TRUE(struct_other_val.ApproxEquals(struct_val, options)); |
| 462 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_val, options)); |
| 463 | ASSERT_TRUE(struct_nan.ApproxEquals(struct_nan, options)); |
| 464 | ASSERT_TRUE(struct_nan.ApproxEquals(struct_other_nan, options)); |
| 465 | |
| 466 | options = options.atol(0.05); |
| 467 | ASSERT_FALSE(struct_val.Equals(struct_other_val, options)); |
| 468 | ASSERT_FALSE(struct_other_val.Equals(struct_val, options)); |
| 469 | ASSERT_FALSE(struct_nan.Equals(struct_val, options)); |
| 470 | ASSERT_TRUE(struct_nan.Equals(struct_nan, options)); |
| 471 | ASSERT_TRUE(struct_nan.Equals(struct_other_nan, options)); |
| 472 | ASSERT_FALSE(struct_val.ApproxEquals(struct_other_val, options)); |
| 473 | ASSERT_FALSE(struct_other_val.ApproxEquals(struct_val, options)); |
| 474 | ASSERT_FALSE(struct_nan.ApproxEquals(struct_val, options)); |
| 475 | ASSERT_TRUE(struct_nan.ApproxEquals(struct_nan, options)); |
| 476 | ASSERT_TRUE(struct_nan.ApproxEquals(struct_other_nan, options)); |
| 477 | } |
| 478 | |
| 479 | template <typename ListScalarClass> |
no test coverage detected