| 624 | }; |
| 625 | |
| 626 | void DivVerifyUint64Int64() |
| 627 | { |
| 628 | size_t i; |
| 629 | |
| 630 | for( i = 0; i < sizeof(uint64_int64)/sizeof(uint64_int64[0]); ++i ) |
| 631 | { |
| 632 | std::uint64_t ret; |
| 633 | if( SafeDivide(uint64_int64[i].x, uint64_int64[i].y, ret) != uint64_int64[i].fExpected ) |
| 634 | { |
| 635 | //assert(false); |
| 636 | printf("Error in case uint64_int64: %I64X, %I64X, expected = %s\n", uint64_int64[i].x, uint64_int64[i].y, uint64_int64[i].fExpected ? "true" : "false"); |
| 637 | } |
| 638 | |
| 639 | // Now test throwing version |
| 640 | bool fSuccess = true; |
| 641 | try |
| 642 | { |
| 643 | SafeInt<std::uint64_t> si(uint64_int64[i].x); |
| 644 | si /= uint64_int64[i].y; |
| 645 | } |
| 646 | catch(...) |
| 647 | { |
| 648 | fSuccess = false; |
| 649 | } |
| 650 | |
| 651 | if( fSuccess != uint64_int64[i].fExpected ) |
| 652 | { |
| 653 | printf("Error in case uint64_int64 throw: %I64X, %I64X, expected = %s\n", uint64_int64[i].x, uint64_int64[i].y, uint64_int64[i].fExpected ? "true" : "false"); |
| 654 | } |
| 655 | |
| 656 | // Also need to test the version that assigns back out |
| 657 | // to a plain int, as it has different logic |
| 658 | fSuccess = true; |
| 659 | try |
| 660 | { |
| 661 | std::uint64_t x(uint64_int64[i].x); |
| 662 | x /= SafeInt<std::int64_t>(uint64_int64[i].y); |
| 663 | } |
| 664 | catch(...) |
| 665 | { |
| 666 | fSuccess = false; |
| 667 | } |
| 668 | |
| 669 | if( fSuccess != uint64_int64[i].fExpected ) |
| 670 | { |
| 671 | printf("Error in case uint64_int64 throw: %I64X, %I64X, expected = %s\n", uint64_int64[i].x, uint64_int64[i].y, uint64_int64[i].fExpected ? "true" : "false"); |
| 672 | } |
| 673 | } |
| 674 | } |
| 675 | |
| 676 | DivTest< std::int64_t, std::uint64_t > int64_uint64_2[] = |
| 677 | { |
no test coverage detected