#include "gtest/gtest.h" #include "RifEclipseUserDataKeywordTools.h" //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, TestIdentifierItemsPerLine) { { std::string s = "AA"; EXPECT_EQ(size_t(0), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s).size()); } { std::string s = "BB"; EXPECT_EQ(size_t(3), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); } { std::string s = "CC"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); EXPECT_EQ(size_t(3), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[1]); } { std::string s = "FF"; EXPECT_EQ(size_t(0), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s).size()); } { std::string s = "GG"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); } { std::string s = "NN"; EXPECT_EQ(size_t(0), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s).size()); } { std::string s = "RR"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); } { std::string s = "SS"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[1]); } { std::string s = "WW"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); } { std::string s = "LB"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); EXPECT_EQ(size_t(3), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[1]); } { std::string s = "LC"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[1]); EXPECT_EQ(size_t(3), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[2]); } { std::string s = "LW"; EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[0]); EXPECT_EQ(size_t(1), RifEclipseUserDataKeywordTools::requiredItemsPerLineForKeyword(s)[1]); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, BuildTableHeaderText) { std::vector keywordNames = { "TIME", "YEARX", "WGT1", "WR42" }; std::vector firstheader = { "OP-1", "OP-1" }; std::vector> headerLines = { firstheader }; auto tableHeaderData = RifEclipseUserDataKeywordTools::buildColumnHeaderText(keywordNames, headerLines); EXPECT_EQ(size_t(4), tableHeaderData.size()); EXPECT_EQ(size_t(1), tableHeaderData[0].size()); EXPECT_EQ(size_t(1), tableHeaderData[1].size()); EXPECT_EQ(size_t(2), tableHeaderData[2].size()); EXPECT_EQ(size_t(2), tableHeaderData[3].size()); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, BuildTableHeaderTextComplex) { std::vector keywordNames = { "TIME", "WGT1", "FVIR", "RPR", "GOPR", "CWIR", "FTPTS36", "CWIR" }; std::vector firstheader = { "OP-1", "8", "MANI-D2", "F-2H", "2H" }; std::vector secondHeader = { "18", "83","3", "9", "8","7" }; std::vector> headerLines = { firstheader, secondHeader }; auto tableHeaderData = RifEclipseUserDataKeywordTools::buildColumnHeaderText(keywordNames, headerLines); EXPECT_EQ(size_t(8), tableHeaderData.size()); EXPECT_EQ(size_t(1), tableHeaderData[0].size()); EXPECT_EQ(size_t(2), tableHeaderData[1].size()); EXPECT_EQ(size_t(1), tableHeaderData[2].size()); EXPECT_EQ(size_t(2), tableHeaderData[3].size()); EXPECT_EQ(size_t(2), tableHeaderData[4].size()); EXPECT_EQ(size_t(5), tableHeaderData[5].size()); EXPECT_EQ(size_t(1), tableHeaderData[6].size()); EXPECT_EQ(size_t(5), tableHeaderData[7].size()); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, MissingHeaderData) { { std::vector keywordNames = { "TIME", "WGT1" }; std::vector firstheader = { }; // Missing well name std::vector> headerLines = { firstheader }; auto tableHeaderData = RifEclipseUserDataKeywordTools::buildColumnHeaderText(keywordNames, headerLines); EXPECT_EQ(size_t(0), tableHeaderData.size()); } { std::vector keywordNames = { "TIME", "WGT1", "FVIR", "RPR", "GOPR", "CWIR", "FTPTS36", "CWIR" }; std::vector firstheader = { "OP-1", "8", "MANI-D2", "F-2H", "2H" }; std::vector secondHeader = { "18", "83","3", "9", "8" }; // Missing value from last triplet std::vector> headerLines = { firstheader, secondHeader }; auto tableHeaderData = RifEclipseUserDataKeywordTools::buildColumnHeaderText(keywordNames, headerLines); EXPECT_EQ(size_t(0), tableHeaderData.size()); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, CreationOfSummaryAddresses) { // Region { std::string quantity = "RGT1"; std::vector columnData = {"1"}; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_REGION); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_EQ(1, address.regionNumber()); } // Well group { std::string quantity = "GT1"; std::vector columnData = { "OP-1" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL_GROUP); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellGroupName().data()); } // Well { std::string quantity = "WGT1"; std::vector columnData = { "OP-1" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellName().data()); } // Well completion { std::string quantity = "CWIT"; std::vector columnData = { "F-3H", "1", "2", "3" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellName().data()); EXPECT_EQ(1, address.cellI()); EXPECT_EQ(2, address.cellJ()); EXPECT_EQ(3, address.cellK()); } // Well LGR { std::string quantity = "LWGT1"; std::vector columnData = { "OP-1", "LGR-NAME" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL_LGR); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellName().data()); EXPECT_STREQ(columnData[1].data(), address.lgrName().data()); } // Well completion LGR { std::string quantity = "LC"; std::vector columnData = { "F-3H", "LGR-NAME", "1", "2", "3" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellName().data()); EXPECT_STREQ(columnData[1].data(), address.lgrName().data()); EXPECT_EQ(1, address.cellI()); EXPECT_EQ(2, address.cellJ()); EXPECT_EQ(3, address.cellK()); } // Well segment { std::string quantity = "SCWIT"; std::vector columnData = { "F-3H", "1" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.wellName().data()); EXPECT_EQ(1, address.wellSegmentNumber()); } // Block { std::string quantity = "BWIT"; std::vector columnData = { "1", "2", "3" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_BLOCK); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_EQ(1, address.cellI()); EXPECT_EQ(2, address.cellJ()); EXPECT_EQ(3, address.cellK()); } // Block LGR { std::string quantity = "LBWIT"; std::vector columnData = { "LGR-name", "1", "2", "3" }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR); EXPECT_STREQ(quantity.data(), address.quantityName().data()); EXPECT_STREQ(columnData[0].data(), address.lgrName().data()); EXPECT_EQ(1, address.cellI()); EXPECT_EQ(2, address.cellJ()); EXPECT_EQ(3, address.cellK()); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RifEclipseUserDataKeywordToolsTest, CreationOfMisc) { // Misc { std::string quantity = "JI-NOT-REQOGNIZED"; std::vector columnData = { }; auto address = RifEclipseUserDataKeywordTools::makeAndFillAddress(quantity, columnData); EXPECT_EQ(address.category(), RifEclipseSummaryAddress::SUMMARY_MISC); EXPECT_STREQ(quantity.data(), address.quantityName().data()); } }