New version based on feedback from code review
This commit is contained in:
@@ -27,6 +27,7 @@ namespace Opm {
|
||||
EclipseState::EclipseState(DeckConstPtr deck) {
|
||||
initPhases(deck);
|
||||
initSchedule(deck);
|
||||
initTitle(deck);
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +36,10 @@ namespace Opm {
|
||||
}
|
||||
|
||||
|
||||
std::string EclipseState::getTitle() const {
|
||||
return m_title;
|
||||
}
|
||||
|
||||
void EclipseState::initSchedule(DeckConstPtr deck) {
|
||||
schedule = ScheduleConstPtr( new Schedule(deck) );
|
||||
}
|
||||
@@ -56,4 +61,15 @@ namespace Opm {
|
||||
return (phases.count(phase) == 1);
|
||||
}
|
||||
|
||||
void EclipseState::initTitle(DeckConstPtr deck){
|
||||
DeckKeywordConstPtr titleKeyword = deck->getKeyword("TITLE");
|
||||
DeckRecordConstPtr record = titleKeyword->getRecord(0);
|
||||
DeckItemPtr item = record->getItem(0);
|
||||
std::vector<std::string> itemValue = item->getStringData();
|
||||
m_title.clear();
|
||||
for(size_t i=0; i!=itemValue.size(); ++i) {
|
||||
m_title.append(itemValue[i]);
|
||||
if (i<itemValue.size()-1) m_title.append(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,13 +34,16 @@ namespace Opm {
|
||||
EclipseState(DeckConstPtr deck);
|
||||
ScheduleConstPtr getSchedule() const;
|
||||
bool hasPhase(enum PhaseEnum phase) const;
|
||||
std::string getTitle() const;
|
||||
|
||||
private:
|
||||
void initSchedule(DeckConstPtr deck);
|
||||
void initPhases(DeckConstPtr deck);
|
||||
void initTitle(DeckConstPtr deck);
|
||||
|
||||
ScheduleConstPtr schedule;
|
||||
std::set<enum PhaseEnum> phases;
|
||||
std::string m_title;
|
||||
};
|
||||
|
||||
typedef std::shared_ptr<EclipseState> EclipseStatePtr;
|
||||
|
||||
@@ -39,6 +39,9 @@ DeckPtr createDeck() {
|
||||
DeckKeywordPtr oilKeyword(new DeckKeyword("OIL"));
|
||||
DeckKeywordPtr gasKeyword(new DeckKeyword("GAS"));
|
||||
|
||||
DeckKeywordPtr titleKeyword(new DeckKeyword("TITLE"));
|
||||
DeckRecordPtr titleRecord(new DeckRecord());
|
||||
DeckStringItemPtr titleItem(new DeckStringItem("TITLE") );
|
||||
|
||||
DeckKeywordPtr scheduleKeyword(new DeckKeyword("SCHEDULE"));
|
||||
DeckKeywordPtr startKeyword(new DeckKeyword("START"));
|
||||
@@ -57,10 +60,16 @@ DeckPtr createDeck() {
|
||||
startRecord->addItem( yearItem );
|
||||
startKeyword->addRecord( startRecord );
|
||||
|
||||
titleItem->push_back( "The" );
|
||||
titleItem->push_back( "title" );
|
||||
titleRecord->addItem( titleItem );
|
||||
titleKeyword->addRecord( titleRecord );
|
||||
|
||||
deck->addKeyword( oilKeyword );
|
||||
deck->addKeyword( gasKeyword );
|
||||
deck->addKeyword( startKeyword );
|
||||
deck->addKeyword( scheduleKeyword );
|
||||
deck->addKeyword( titleKeyword );
|
||||
|
||||
return deck;
|
||||
}
|
||||
@@ -85,3 +94,11 @@ BOOST_AUTO_TEST_CASE(PhasesCorrect) {
|
||||
BOOST_CHECK( state.hasPhase( PhaseEnum::GAS ));
|
||||
BOOST_CHECK( !state.hasPhase( PhaseEnum::WATER ));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(TitleCorrect) {
|
||||
DeckPtr deck = createDeck();
|
||||
EclipseState state(deck);
|
||||
|
||||
BOOST_CHECK_EQUAL( state.getTitle(), "The title");
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ using namespace Opm;
|
||||
BOOST_AUTO_TEST_CASE( parse_TITLE_OK ) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path fileWithTitleKeyword("testdata/integration_tests/TITLE/TITLE1.txt");
|
||||
|
||||
|
||||
DeckPtr deck = parser->parseFile (fileWithTitleKeyword.string(), true);
|
||||
|
||||
BOOST_CHECK_EQUAL(size_t(2), deck->size());
|
||||
@@ -46,10 +46,15 @@ BOOST_AUTO_TEST_CASE( parse_TITLE_OK ) {
|
||||
DeckKeywordConstPtr titleKeyword = deck->getKeyword("TITLE");
|
||||
DeckRecordConstPtr record = titleKeyword->getRecord(0);
|
||||
DeckItemPtr item = record->getItem(0);
|
||||
std::string itemValue = item->getString(0);
|
||||
BOOST_CHECK (itemValue.length() > 0 ); //Should check for actual value?
|
||||
BOOST_CHECK_EQUAL (true, deck->hasKeyword("START"));
|
||||
std::vector<std::string> itemValue = item->getStringData();
|
||||
std::string itemValueString;
|
||||
for(size_t i=0; i!=itemValue.size(); ++i) {
|
||||
itemValueString.append(itemValue[i]);
|
||||
if (i<itemValue.size()-1) itemValueString.append(" ");
|
||||
}
|
||||
|
||||
BOOST_CHECK_EQUAL (0, itemValueString.compare("This is the title of the model."));
|
||||
BOOST_CHECK_EQUAL (true, deck->hasKeyword("START"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -93,8 +93,6 @@ namespace Opm {
|
||||
|
||||
DeckRecordConstPtr ParserRecord::parse(RawRecordPtr rawRecord) const {
|
||||
std::string recordBeforeParsing = rawRecord->getRecordString();
|
||||
std::cout << "Inside ParserRecord::parse(): recordBeforeParsing: " << recordBeforeParsing << std::endl;
|
||||
std::cout << "Inside ParserRecord::parse(): size(): " << size() << std::endl;
|
||||
DeckRecordPtr deckRecord(new DeckRecord());
|
||||
for (size_t i = 0; i < size(); i++) {
|
||||
ParserItemConstPtr parserItem = get(i);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
{"name" : "TITLE" , "size" : 1 , "items" : [
|
||||
{"name" : "TitleText" , "value_type" : "STRING"}]}
|
||||
{"name" : "TitleText" , "value_type" : "STRING", "size_type" : "ALL"}]}
|
||||
|
||||
2
testdata/integration_tests/TITLE/TITLE1.txt
vendored
2
testdata/integration_tests/TITLE/TITLE1.txt
vendored
@@ -1,4 +1,4 @@
|
||||
TITLE
|
||||
'This is the title of the model.'
|
||||
This is the title of the model.
|
||||
START
|
||||
10 'FEB' 2012
|
||||
|
||||
Reference in New Issue
Block a user