Added new UNKNOWN for keywordSizeEnum

This commit is contained in:
Kristian Flikka
2013-12-04 14:26:08 +01:00
parent ce692159c9
commit d007e8400f
5 changed files with 39 additions and 16 deletions

View File

@@ -58,6 +58,12 @@ namespace Opm {
case FIXED:
return "FIXED";
break;
case OTHER_KEYWORD_IN_DECK:
return "OTHER_KEYWORD_IN_DECK";
break;
case UNKNOWN:
return "UNKNOWN";
break;
default:
throw std::invalid_argument("Implementation error - should NOT be here");
}
@@ -70,6 +76,10 @@ namespace Opm {
return SLASH_TERMINATED;
else if (stringValue == "FIXED")
return FIXED;
else if (stringValue == "OTHER_KEYWORD_IN_DECK")
return OTHER_KEYWORD_IN_DECK;
else if (stringValue == "UNKNOWN")
return UNKNOWN;
else
throw std::invalid_argument("String: " + stringValue + " can not be converted to enum value");
}

View File

@@ -28,7 +28,8 @@ namespace Opm {
enum ParserKeywordSizeEnum {
SLASH_TERMINATED = 0,
FIXED = 1,
OTHER = 2
OTHER_KEYWORD_IN_DECK = 2,
UNKNOWN=3
};

View File

@@ -37,7 +37,6 @@ namespace Opm {
if (!validName(name))
throw std::invalid_argument("Invalid name: " + name + "keyword must be all upper case, max 8 characters. Starting with character.");
m_keywordSizeType = SLASH_TERMINATED;
m_isDataKeyword = false;
m_isTableCollection = false;
m_name = name;
@@ -45,19 +44,23 @@ namespace Opm {
m_record = ParserRecordPtr(new ParserRecord);
}
ParserKeyword::ParserKeyword(const std::string& name, ParserKeywordActionEnum action) {
ParserKeyword::ParserKeyword(const std::string& name, ParserKeywordSizeEnum sizeType, ParserKeywordActionEnum action) {
m_keywordSizeType = SLASH_TERMINATED;
commonInit(name, action);
m_action = action;
}
ParserKeyword::ParserKeyword(const char * name, ParserKeywordActionEnum action) {
ParserKeyword::ParserKeyword(const char * name, ParserKeywordSizeEnum sizeType, ParserKeywordActionEnum action) {
if (!(sizeType == SLASH_TERMINATED || sizeType == UNKNOWN)) {
throw std::invalid_argument("Size type " + ParserKeywordSizeEnum2String(sizeType) + " can not be set explicitly.");
}
m_keywordSizeType = sizeType;
commonInit(name, action);
m_action = action;
}
ParserKeyword::ParserKeyword(const std::string& name, size_t fixedKeywordSize, ParserKeywordActionEnum action) {
commonInit(name, action);
m_keywordSizeType = FIXED;
m_keywordSizeType = sizeType;
m_fixedSize = fixedKeywordSize;
}
@@ -136,7 +139,7 @@ namespace Opm {
}
void ParserKeyword::initSizeKeyword(const std::string& sizeKeyword, const std::string& sizeItem) {
m_keywordSizeType = OTHER;
m_keywordSizeType = OTHER_KEYWORD_IN_DECK;
m_sizeDefinitionPair = std::pair<std::string, std::string>(sizeKeyword, sizeItem);
}
@@ -372,14 +375,15 @@ namespace Opm {
if (m_fixedSize == other.m_fixedSize)
equal = true;
break;
case SLASH_TERMINATED:
equal = true;
break;
case OTHER:
case OTHER_KEYWORD_IN_DECK:
if ((m_sizeDefinitionPair.first == other.m_sizeDefinitionPair.first) &&
(m_sizeDefinitionPair.second == other.m_sizeDefinitionPair.second))
equal = true;
break;
default:
equal = true;
break;
}
return equal;
} else
@@ -396,7 +400,7 @@ namespace Opm {
case FIXED:
os << lhs << " = new ParserKeyword(\"" << m_name << "\",(size_t)" << m_fixedSize << "," << actionString << ");" << std::endl;
break;
case OTHER:
case OTHER_KEYWORD_IN_DECK:
if (isTableCollection())
os << lhs << " = new ParserKeyword(\"" << m_name << "\",\"" << m_sizeDefinitionPair.first << "\",\"" << m_sizeDefinitionPair.second << "\"," << actionString << ", true);" << std::endl;
else

View File

@@ -52,6 +52,8 @@ BOOST_AUTO_TEST_CASE(TestItemSizeEnumLoop) {
BOOST_AUTO_TEST_CASE(TestKeywordSizeEnum2String) {
BOOST_CHECK_EQUAL( "SLASH_TERMINATED" , ParserKeywordSizeEnum2String(SLASH_TERMINATED));
BOOST_CHECK_EQUAL( "FIXED" , ParserKeywordSizeEnum2String(FIXED));
BOOST_CHECK_EQUAL( "OTHER_KEYWORD_IN_DECK" , ParserKeywordSizeEnum2String(OTHER_KEYWORD_IN_DECK));
BOOST_CHECK_EQUAL( "UNKNOWN" , ParserKeywordSizeEnum2String(UNKNOWN));
}
@@ -59,6 +61,8 @@ BOOST_AUTO_TEST_CASE(TestKeywordSizeEnumFromString) {
BOOST_CHECK_THROW( ParserKeywordSizeEnumFromString("XXX") , std::invalid_argument );
BOOST_CHECK_EQUAL( FIXED , ParserKeywordSizeEnumFromString("FIXED"));
BOOST_CHECK_EQUAL( SLASH_TERMINATED , ParserKeywordSizeEnumFromString("SLASH_TERMINATED"));
BOOST_CHECK_EQUAL( "OTHER_KEYWORD_IN_DECK" , ParserKeywordSizeEnum2String(OTHER_KEYWORD_IN_DECK));
BOOST_CHECK_EQUAL( "UNKNOWN" , ParserKeywordSizeEnum2String(UNKNOWN));
}
@@ -66,9 +70,13 @@ BOOST_AUTO_TEST_CASE(TestKeywordSizeEnumFromString) {
BOOST_AUTO_TEST_CASE(TestKeywordSizeEnumLoop) {
BOOST_CHECK_EQUAL( FIXED , ParserKeywordSizeEnumFromString( ParserKeywordSizeEnum2String( FIXED ) ));
BOOST_CHECK_EQUAL( SLASH_TERMINATED , ParserKeywordSizeEnumFromString( ParserKeywordSizeEnum2String( SLASH_TERMINATED ) ));
BOOST_CHECK_EQUAL( OTHER_KEYWORD_IN_DECK , ParserKeywordSizeEnumFromString( ParserKeywordSizeEnum2String( OTHER_KEYWORD_IN_DECK ) ));
BOOST_CHECK_EQUAL( UNKNOWN , ParserKeywordSizeEnumFromString( ParserKeywordSizeEnum2String( UNKNOWN ) ));
BOOST_CHECK_EQUAL( "FIXED" , ParserKeywordSizeEnum2String(ParserKeywordSizeEnumFromString( "FIXED" ) ));
BOOST_CHECK_EQUAL( "SLASH_TERMINATED" , ParserKeywordSizeEnum2String(ParserKeywordSizeEnumFromString( "SLASH_TERMINATED" ) ));
BOOST_CHECK_EQUAL( "OTHER_KEYWORD_IN_DECK" , ParserKeywordSizeEnum2String(ParserKeywordSizeEnumFromString( "OTHER_KEYWORD_IN_DECK" ) ));
BOOST_CHECK_EQUAL( "UNKNOWN" , ParserKeywordSizeEnum2String(ParserKeywordSizeEnumFromString( "UNKNOWN" ) ));
}

View File

@@ -60,7 +60,7 @@ BOOST_AUTO_TEST_CASE(ParserKeyword_withOtherSize_SizeTypeOTHER) {
std::string keyword("KEYWORD");
ParserKeyword parserKeyword(keyword, "EQUILDIMS" , "NTEQUIL");
const std::pair<std::string,std::string>& sizeKW = parserKeyword.getSizeDefinitionPair();
BOOST_CHECK_EQUAL(OTHER , parserKeyword.getSizeType() );
BOOST_CHECK_EQUAL(OTHER_KEYWORD_IN_DECK , parserKeyword.getSizeType() );
BOOST_CHECK_EQUAL("EQUILDIMS", sizeKW.first );
BOOST_CHECK_EQUAL("NTEQUIL" , sizeKW.second );
}
@@ -204,7 +204,7 @@ BOOST_AUTO_TEST_CASE(ConstructFromJsonObject_withSizeOther) {
const std::pair<std::string,std::string>& sizeKW = parserKeyword.getSizeDefinitionPair();
BOOST_CHECK_EQUAL("BPR" , parserKeyword.getName());
BOOST_CHECK_EQUAL( false , parserKeyword.hasFixedSize() );
BOOST_CHECK_EQUAL( parserKeyword.getSizeType() , OTHER);
BOOST_CHECK_EQUAL( parserKeyword.getSizeType() , OTHER_KEYWORD_IN_DECK);
BOOST_CHECK_EQUAL("Bjarne", sizeKW.first );
BOOST_CHECK_EQUAL("BjarneIgjen" , sizeKW.second );
}
@@ -368,7 +368,7 @@ BOOST_AUTO_TEST_CASE(ConstructorIsTableCollection) {
BOOST_CHECK(parserKeyword->isTableCollection());
BOOST_CHECK(!parserKeyword->hasFixedSize());
BOOST_CHECK_EQUAL( parserKeyword->getSizeType() , OTHER);
BOOST_CHECK_EQUAL( parserKeyword->getSizeType() , OTHER_KEYWORD_IN_DECK);
BOOST_CHECK_EQUAL("TABDIMS", sizeKW.first );
BOOST_CHECK_EQUAL("NTPVT" , sizeKW.second );
}