| 280 | |
| 281 | template <typename T> |
| 282 | void AssertFingerprintablesNotEqual(const T& left, const T& right, bool check_metadata, |
| 283 | const char* types_plural) { |
| 284 | ASSERT_FALSE(left.Equals(right, check_metadata)) |
| 285 | << types_plural << " '" << left.ToString(check_metadata) << "' and '" |
| 286 | << right.ToString(check_metadata) << "' should have compared unequal"; |
| 287 | auto lfp = left.fingerprint(); |
| 288 | auto rfp = right.fingerprint(); |
| 289 | // Note: all types tested in this file should implement fingerprinting, |
| 290 | // except extension types. |
| 291 | if (lfp != "" && rfp != "") { |
| 292 | if (check_metadata) { |
| 293 | lfp += left.metadata_fingerprint(); |
| 294 | rfp += right.metadata_fingerprint(); |
| 295 | } |
| 296 | ASSERT_NE(lfp, rfp) << "Fingerprints for " << types_plural << " '" |
| 297 | << left.ToString(check_metadata) << "' and '" |
| 298 | << right.ToString(check_metadata) |
| 299 | << "' should have compared unequal"; |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | template <typename T> |
| 304 | void AssertFingerprintablesNotEqual(const std::shared_ptr<T>& left, |