| 896 | }; |
| 897 | |
| 898 | void DivVerifyUint64Int32() |
| 899 | { |
| 900 | size_t i; |
| 901 | |
| 902 | for( i = 0; i < sizeof(uint64_int32)/sizeof(uint64_int32[0]); ++i ) |
| 903 | { |
| 904 | std::uint64_t ret; |
| 905 | if( SafeDivide(uint64_int32[i].x, uint64_int32[i].y, ret) != uint64_int32[i].fExpected ) |
| 906 | { |
| 907 | //assert(false); |
| 908 | printf("Error in case uint64_int64: %I64X, %I64X, expected = %s\n", uint64_int32[i].x, uint64_int32[i].y, uint64_int32[i].fExpected ? "true" : "false"); |
| 909 | } |
| 910 | |
| 911 | // Now test throwing version |
| 912 | bool fSuccess = true; |
| 913 | try |
| 914 | { |
| 915 | SafeInt<std::uint64_t> si(uint64_int32[i].x); |
| 916 | si /= uint64_int32[i].y; |
| 917 | } |
| 918 | catch(...) |
| 919 | { |
| 920 | fSuccess = false; |
| 921 | } |
| 922 | |
| 923 | if( fSuccess != uint64_int32[i].fExpected ) |
| 924 | { |
| 925 | printf("Error in case uint64_int32 throw: %I64X, %X, expected = %s\n", uint64_int32[i].x, uint64_int32[i].y, uint64_int32[i].fExpected ? "true" : "false"); |
| 926 | } |
| 927 | |
| 928 | // Also need to test the version that assigns back out |
| 929 | // to a plain int, as it has different logic |
| 930 | fSuccess = true; |
| 931 | try |
| 932 | { |
| 933 | std::uint64_t x(uint64_int32[i].x); |
| 934 | x /= SafeInt<std::int64_t>(uint64_int32[i].y); |
| 935 | } |
| 936 | catch(...) |
| 937 | { |
| 938 | fSuccess = false; |
| 939 | } |
| 940 | |
| 941 | if( fSuccess != uint64_int32[i].fExpected ) |
| 942 | { |
| 943 | printf("Error in case uint64_int64 throw: %I64X, %X, expected = %s\n", uint64_int32[i].x, uint64_int32[i].y, uint64_int32[i].fExpected ? "true" : "false"); |
| 944 | } |
| 945 | } |
| 946 | } |
| 947 | |
| 948 | DivTest< std::int32_t, std::uint64_t > int32_uint64_2[] = |
| 949 | { |
no test coverage detected