New version based on feedback from code review

This commit is contained in:
Atle Haugan
2014-01-29 19:39:33 +01:00
parent 5dcc90cfa6
commit 825e976566
7 changed files with 47 additions and 8 deletions

View File

@@ -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(" ");
}
}
}

View File

@@ -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;

View File

@@ -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");
}

View File

@@ -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"));
}

View File

@@ -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);

View File

@@ -1,2 +1,2 @@
{"name" : "TITLE" , "size" : 1 , "items" : [
{"name" : "TitleText" , "value_type" : "STRING"}]}
{"name" : "TitleText" , "value_type" : "STRING", "size_type" : "ALL"}]}

View File

@@ -1,4 +1,4 @@
TITLE
'This is the title of the model.'
This is the title of the model.
START
10 'FEB' 2012