Code improvements based on code review feedback
This commit is contained in:
@@ -1,8 +1,20 @@
|
||||
/*
|
||||
* File: EclipseDataDoctor.cpp
|
||||
* Author: kflik
|
||||
*
|
||||
* Created on August 20, 2013, 1:19 PM
|
||||
/*
|
||||
Copyright 2013 Statoil ASA.
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
|
||||
OPM is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OPM is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
/*
|
||||
* File: KeywordDescriber.cpp
|
||||
* Author: atleh
|
||||
*
|
||||
* Created on December 19, 2013, 1:19 PM
|
||||
Copyright 2013 Statoil ASA.
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
|
||||
OPM is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OPM is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
@@ -10,36 +22,129 @@
|
||||
#include <opm/parser/eclipse/Parser/Parser.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParserRecord.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParserItem.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParserEnums.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParserKeyword.hpp>
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
void printKeywordInformation(Opm::ParserKeywordConstPtr keyword)
|
||||
void printKeywordInformation(Opm::ParserPtr parser, std::vector<std::string> keywords)
|
||||
{
|
||||
std::string indent = " ";
|
||||
std::string indent = " ";
|
||||
std::string keywordSeparator = "---------\n";
|
||||
std::string itemSeparator = "\n";
|
||||
|
||||
std::vector<std::string>::const_iterator iterator;
|
||||
for (iterator = keywords.begin(); iterator != keywords.end(); ++iterator) {
|
||||
Opm::ParserKeywordConstPtr keyword = parser->getKeyword(*iterator);
|
||||
|
||||
std::cout << keyword->getName() << std::endl;
|
||||
std::cout << indent << "Number of items: " << keyword->numItems() << std::endl;
|
||||
std::cout << indent << "Has dimension information: " << keyword->hasDimension() << std::endl;
|
||||
switch (keyword->getSizeType()) {
|
||||
case Opm::ParserKeywordSizeEnum::SLASH_TERMINATED: {
|
||||
std::cout << indent << "Size type: SLASH_TERMINATED" << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserKeywordSizeEnum::FIXED: {
|
||||
std::cout << indent << "Size type: FIXED" << std::endl;
|
||||
if (keyword->hasFixedSize())
|
||||
std::cout << indent << "Fixed size: " << keyword->getFixedSize() << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserKeywordSizeEnum::OTHER_KEYWORD_IN_DECK: {
|
||||
std::cout << indent << "Size type: OTHER" << std::endl;
|
||||
std::pair<std::string, std::string> sizeDefinitionPair = keyword->getSizeDefinitionPair();
|
||||
std::cout << indent << "Size defined by: " << sizeDefinitionPair.first << ", " << sizeDefinitionPair.second << std::endl;
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
std::cout << indent << "Size type: UNKNOWN" << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::cout << itemSeparator;
|
||||
std::cout << indent << "List of items:" << std::endl;
|
||||
Opm::ParserRecordPtr parserRecord = keyword->getRecord();
|
||||
std::vector<Opm::ParserItemConstPtr>::const_iterator iterator;
|
||||
for (iterator = parserRecord->begin(); iterator != parserRecord->end(); ++iterator) {
|
||||
std::cout << indent << (*iterator)->name() << std::endl;
|
||||
switch ((*iterator)->sizeType()) {
|
||||
case Opm::ParserItemSizeEnum::ALL: {
|
||||
std::cout << indent << indent << "SizeType: ALL" << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserItemSizeEnum::SINGLE: {
|
||||
std::cout << indent << indent << "SizeType: SINGLE" << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << indent << indent << "Has dimension information: " << (*iterator)->hasDimension() << std::endl;
|
||||
if ((*iterator)->numDimensions() == 1)
|
||||
std::cout << indent << indent << "Dimension: " << (*iterator)->getDimension((*iterator)->numDimensions()-1) << std::endl;
|
||||
std::cout << itemSeparator;
|
||||
}
|
||||
std::cout << keywordSeparator;
|
||||
}
|
||||
}
|
||||
|
||||
void printKeywordInformationOBSOLETE(Opm::ParserKeywordConstPtr keyword)
|
||||
{
|
||||
std::string indent = " ";
|
||||
std::string keywordSeparator = "---------\n";
|
||||
std::string itemSeparator = "\n";
|
||||
|
||||
std::cout << keyword->getName() << std::endl;
|
||||
std::cout << indent << "numItems: " << keyword->numItems() << std::endl;
|
||||
std::cout << indent << "hasDimension: " << keyword->hasDimension() << std::endl;
|
||||
std::cout << indent << "hasFixedSize: " << keyword->hasFixedSize() << std::endl;
|
||||
if (keyword->hasFixedSize())
|
||||
std::cout << indent << "getFixedSize: " << keyword->getFixedSize() << std::endl;
|
||||
std::cout << indent << "getSizeType: " << keyword->getSizeType() << std::endl;
|
||||
std::pair<std::string, std::string> sizeDefinitionPair = keyword->getSizeDefinitionPair();
|
||||
std::cout << indent << "getSizeDefinitionPair: '" << sizeDefinitionPair.first << "', '" << sizeDefinitionPair.second << "'" << std::endl;
|
||||
std::cout << indent << "Number of items: " << keyword->numItems() << std::endl;
|
||||
std::cout << indent << "Has dimension information: " << keyword->hasDimension() << std::endl;
|
||||
switch (keyword->getSizeType()) {
|
||||
case Opm::ParserKeywordSizeEnum::SLASH_TERMINATED: {
|
||||
std::cout << indent << "Size type: SLASH_TERMINATED" << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserKeywordSizeEnum::FIXED: {
|
||||
std::cout << indent << "Size type: FIXED" << std::endl;
|
||||
if (keyword->hasFixedSize())
|
||||
std::cout << indent << "Fixed size: " << keyword->getFixedSize() << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserKeywordSizeEnum::OTHER_KEYWORD_IN_DECK: {
|
||||
std::cout << indent << "Size type: OTHER" << std::endl;
|
||||
std::pair<std::string, std::string> sizeDefinitionPair = keyword->getSizeDefinitionPair();
|
||||
std::cout << indent << "Size defined by: " << sizeDefinitionPair.first << ", " << sizeDefinitionPair.second << std::endl;
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
std::cout << indent << "Size type: UNKNOWN" << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::cout << itemSeparator;
|
||||
std::cout << indent << "List of items:" << std::endl;
|
||||
Opm::ParserRecordPtr parserRecord = keyword->getRecord();
|
||||
std::vector<Opm::ParserItemConstPtr>::const_iterator iterator;
|
||||
for (iterator = parserRecord->begin(); iterator != parserRecord->end(); ++iterator) {
|
||||
std::cout << indent << (*iterator)->name() << std::endl;
|
||||
std::cout << indent << indent << "sizeType: " << (*iterator)->sizeType() << std::endl;
|
||||
std::cout << indent << indent << "hasDimension: " << (*iterator)->hasDimension() << std::endl;
|
||||
std::cout << indent << indent << "numDimensions: " << (*iterator)->numDimensions() << std::endl;
|
||||
switch ((*iterator)->sizeType()) {
|
||||
case Opm::ParserItemSizeEnum::ALL: {
|
||||
std::cout << indent << indent << "SizeType: ALL" << std::endl;
|
||||
break;
|
||||
}
|
||||
case Opm::ParserItemSizeEnum::SINGLE: {
|
||||
std::cout << indent << indent << "SizeType: SINGLE" << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << indent << indent << "Has dimension information: " << (*iterator)->hasDimension() << std::endl;
|
||||
if ((*iterator)->numDimensions() == 1)
|
||||
std::cout << indent << indent << "getDimension(0): '" << (*iterator)->getDimension((*iterator)->numDimensions()-1) << "'" << std::endl;
|
||||
std::cout << indent << indent << "Dimension: " << (*iterator)->getDimension((*iterator)->numDimensions()-1) << std::endl;
|
||||
std::cout << itemSeparator;
|
||||
}
|
||||
std::cout << keywordSeparator;
|
||||
}
|
||||
|
||||
bool parseCommandLineForAllKeywordsOption(char** argv)
|
||||
@@ -77,11 +182,7 @@ int main(int argc, char** argv) {
|
||||
|
||||
std::vector<std::string> keywords = createListOfKeywordsToDescribe(argv, allKeywords, parser);
|
||||
|
||||
std::vector<std::string>::const_iterator iterator;
|
||||
for (iterator = keywords.begin(); iterator != keywords.end(); ++iterator) {
|
||||
Opm::ParserKeywordConstPtr keyword = parser->getKeyword(*iterator);
|
||||
printKeywordInformation(keyword);
|
||||
}
|
||||
printKeywordInformation(parser, keywords);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -66,13 +66,29 @@ BOOST_AUTO_TEST_CASE(getKeyword_haskeyword_returnskeyword) {
|
||||
BOOST_CHECK_EQUAL(parserKeyword, parser->getKeyword("FJAS"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeyword_hasnotkeyword_throws) {
|
||||
BOOST_AUTO_TEST_CASE(getKeyword_hasnotkeyword_getKeywordThrowsException) {
|
||||
ParserPtr parser(new Parser());
|
||||
ParserKeywordConstPtr parserKeyword(new ParserKeyword("FJAS"));
|
||||
parser->addKeyword(parserKeyword);
|
||||
BOOST_CHECK_THROW(parser->getKeyword("FJASS"), std::invalid_argument);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getAllKeywords_hasTwoKeywords_returnsCompleteList) {
|
||||
ParserPtr parser(new Parser(false));
|
||||
std::cout << parser->getAllKeywords().size() << std::endl;
|
||||
ParserKeywordConstPtr firstParserKeyword(new ParserKeyword("FJAS"));
|
||||
parser->addKeyword(firstParserKeyword);
|
||||
ParserKeywordConstPtr secondParserKeyword(new ParserKeyword("SAJF"));
|
||||
parser->addKeyword(secondParserKeyword);
|
||||
BOOST_CHECK_EQUAL(2U, parser->getAllKeywords().size());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getAllKeywords_hasNoKeywords_returnsEmptyList) {
|
||||
ParserPtr parser(new Parser(false));
|
||||
BOOST_CHECK_EQUAL(0U, parser->getAllKeywords().size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************ JSON config related tests **********************'*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user