| 689 | } |
| 690 | |
| 691 | std::string makeErrorMessage( |
| 692 | const std::vector<MaterializedRow>& missingRows, |
| 693 | const std::vector<MaterializedRow>& extraRows, |
| 694 | size_t expectedSize, |
| 695 | size_t actualSize, |
| 696 | const TypePtr& type) { |
| 697 | std::ostringstream message; |
| 698 | message << "Expected " << expectedSize << ", got " << actualSize << std::endl; |
| 699 | message << extraRows.size() << " extra rows, " << missingRows.size() |
| 700 | << " missing rows" << std::endl; |
| 701 | |
| 702 | auto extraRowsToPrint = std::min((size_t)10, extraRows.size()); |
| 703 | message << extraRowsToPrint << " of extra rows:" << std::endl; |
| 704 | |
| 705 | for (int32_t i = 0; i < extraRowsToPrint; i++) { |
| 706 | message << "\t"; |
| 707 | printRow(extraRows[i], type, message); |
| 708 | message << std::endl; |
| 709 | } |
| 710 | message << std::endl; |
| 711 | |
| 712 | auto missingRowsToPrint = std::min((size_t)10, missingRows.size()); |
| 713 | message << missingRowsToPrint << " of missing rows:" << std::endl; |
| 714 | for (int32_t i = 0; i < missingRowsToPrint; i++) { |
| 715 | message << "\t"; |
| 716 | printRow(missingRows[i], type, message); |
| 717 | message << std::endl; |
| 718 | } |
| 719 | message << std::endl; |
| 720 | return message.str(); |
| 721 | } |
| 722 | |
| 723 | std::string MaterializedRowEpsilonComparator::getUserFriendlyDiff( |
| 724 | const TypePtr& type) const { |
no test coverage detected