void ECLFilesComparator::resultsForKeyword(const std::string keyword) { std::cout << "\nKeyword " << keyword << ":\n\n"; const unsigned int occurrences1 = ecl_file_get_num_named_kw(ecl_file1, keyword.c_str()); const unsigned int occurrences2 = ecl_file_get_num_named_kw(ecl_file2, keyword.c_str()); if (occurrences1 != occurrences2) { std::cout << "For keyword " << keyword << ":\n"; OPM_THROW(std::runtime_error, "Number of keyword occurrences are not equal."); } if (!keywordValidForComparing(keyword)) { return; } for (unsigned int occurence = 0; occurence < occurrences1; ++occurence) { deviationsForOccurence(keyword, occurence); } printResultsForKeyword(keyword); absDeviation.clear(); relDeviation.clear(); }
void RegressionTest::resultsForKeyword(const std::string keyword) { keywordValidForComparing(keyword); const unsigned int occurrences1 = ecl_file_get_num_named_kw(ecl_file1, keyword.c_str()); const unsigned int occurrences2 = ecl_file_get_num_named_kw(ecl_file2, keyword.c_str()); if (!onlyLastOccurrence && occurrences1 != occurrences2) { OPM_THROW(std::runtime_error, "For keyword " << keyword << ":" << "\nKeyword occurrences in first file: " << occurrences1 << "\nKeyword occurrences in second file: " << occurrences2 << "\nThe number of occurrences differ."); } // Assuming keyword type is constant for every occurrence: const ecl_type_enum kw_type = ecl_file_iget_named_type(ecl_file1, keyword.c_str(), 0); switch(kw_type) { case ECL_DOUBLE_TYPE: case ECL_FLOAT_TYPE: std::cout << "Comparing " << keyword << "..."; if (onlyLastOccurrence) { doubleComparisonForOccurrence(keyword, occurrences1 - 1, occurrences2 - 1); } else { for (unsigned int occurrence = 0; occurrence < occurrences1; ++occurrence) { doubleComparisonForOccurrence(keyword, occurrence, occurrence); } } std::cout << "done." << std::endl; printResultsForKeyword(keyword); absDeviation.clear(); relDeviation.clear(); return; case ECL_INT_TYPE: std::cout << "Comparing " << keyword << "..."; if (onlyLastOccurrence) { intComparisonForOccurrence(keyword, occurrences1 - 1, occurrences2 - 1); } else { for (unsigned int occurrence = 0; occurrence < occurrences1; ++occurrence) { intComparisonForOccurrence(keyword, occurrence, occurrence); } } break; case ECL_CHAR_TYPE: std::cout << "Comparing " << keyword << "..."; if (onlyLastOccurrence) { charComparisonForOccurrence(keyword, occurrences1 - 1, occurrences2 - 1); } else { for (unsigned int occurrence = 0; occurrence < occurrences1; ++occurrence) { charComparisonForOccurrence(keyword, occurrence, occurrence); } } break; case ECL_BOOL_TYPE: std::cout << "Comparing " << keyword << "..."; if (onlyLastOccurrence) { boolComparisonForOccurrence(keyword, occurrences1 - 1, occurrences2 - 1); } else { for (unsigned int occurrence = 0; occurrence < occurrences1; ++occurrence) { boolComparisonForOccurrence(keyword, occurrence, occurrence); } } break; case ECL_MESS_TYPE: std::cout << "\nKeyword " << keyword << " is of type " << ecl_util_get_type_name(kw_type) << ", which is not supported in regression test." << "\n\n"; return; default: std::cout << "\nKeyword " << keyword << "has undefined type." << std::endl; return; } std::cout << "done." << std::endl; }