| 153 | }; |
| 154 | |
| 155 | void MultVerifyUint64Uint64() |
| 156 | { |
| 157 | size_t i; |
| 158 | |
| 159 | for( i = 0; i < COUNTOF(uint64_uint64); ++i ) |
| 160 | { |
| 161 | std::uint64_t ret; |
| 162 | if( SafeMultiply(uint64_uint64[i].x, uint64_uint64[i].y, ret) != uint64_uint64[i].fExpected ) |
| 163 | { |
| 164 | //assert(false); |
| 165 | // printf("Error in case uint64_uint64: %I64X, %I64X, expected = %s\n", |
| 166 | // uint64_uint64[i].x, uint64_uint64[i].y, uint64_uint64[i].fExpected ? "true" : "false"); |
| 167 | cerr << "Error in case uint64_uint64: "; |
| 168 | cerr << hex << setw(16) << setfill('0') << uint64_uint64[i].x << ", "; |
| 169 | cerr << hex << setw(16) << setfill('0') << uint64_uint64[i].y << ", "; |
| 170 | cerr << "expected = " << uint64_uint64[i].fExpected << endl; |
| 171 | } |
| 172 | |
| 173 | // Now test throwing version |
| 174 | bool fSuccess = true; |
| 175 | try |
| 176 | { |
| 177 | SafeInt<std::uint64_t> si(uint64_uint64[i].x); |
| 178 | si *= uint64_uint64[i].y; |
| 179 | } |
| 180 | catch(...) |
| 181 | { |
| 182 | fSuccess = false; |
| 183 | } |
| 184 | |
| 185 | if( fSuccess != uint64_uint64[i].fExpected ) |
| 186 | { |
| 187 | // printf("Error in case uint64_uint64 throw: %I64X, %I64X, expected = %s\n", |
| 188 | // uint64_uint64[i].x, uint64_uint64[i].y, uint64_uint64[i].fExpected ? "true" : "false"); |
| 189 | cerr << "Error in case uint64_uint64 throw: "; |
| 190 | cerr << hex << setw(16) << setfill('0') << uint64_uint64[i].x << ", "; |
| 191 | cerr << hex << setw(16) << setfill('0') << uint64_uint64[i].y << ", "; |
| 192 | cerr << "expected = " << uint64_uint64[i].fExpected << endl; |
| 193 | } |
| 194 | } |
| 195 | } |
| 196 | |
| 197 | static const MultTest< std::uint64_t, std::uint32_t > uint64_uint32[] = |
| 198 | { |
no test coverage detected