/* 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 . */ #define BOOST_TEST_MODULE ParserIntegrationTests #include #include #include #include #include #include #include #include using namespace Opm; BOOST_AUTO_TEST_CASE( parse_ACTION_OK ) { ParserPtr parser(new Parser( false )); boost::filesystem::path actionFile("testdata/integration_tests/ACTION/ACTION.txt"); boost::filesystem::path actionFile2("testdata/integration_tests/ACTION/ACTION_EXCEPTION.txt"); ParserKeywordConstPtr DIMENS = ParserKeyword::createFixedSized("DIMENS" , (size_t) 1 , IGNORE_WARNING ); ParserKeywordConstPtr THROW = ParserKeyword::createFixedSized("THROW" , UNKNOWN , THROW_EXCEPTION ); BOOST_REQUIRE( parser->loadKeywordFromFile( boost::filesystem::path( std::string(KEYWORD_DIRECTORY) + std::string("/W/WCONHIST") )) ); parser->addParserKeyword( DIMENS ); parser->addParserKeyword( THROW ); BOOST_REQUIRE( parser->canParseDeckKeyword( "DIMENS" )); BOOST_REQUIRE( parser->canParseDeckKeyword( "WCONHIST" )); BOOST_REQUIRE( parser->canParseDeckKeyword( "THROW" )); BOOST_REQUIRE_THROW( parser->parseFile( actionFile2.string() , false) , std::invalid_argument ); DeckPtr deck = parser->parseFile(actionFile.string() , false); DeckKeywordConstPtr kw1 = deck->getKeyword("WCONHIST" , 0); BOOST_CHECK_EQUAL( 3U , kw1->size() ); DeckRecordConstPtr rec1 = kw1->getRecord(0); BOOST_CHECK_EQUAL( 11U , rec1->size() ); DeckRecordConstPtr rec3 = kw1->getRecord(2); BOOST_CHECK_EQUAL( 11U , rec3->size() ); DeckItemConstPtr item1 = rec1->getItem("WELL"); DeckItemConstPtr item1_index = rec1->getItem(0); BOOST_CHECK_EQUAL( item1 , item1_index ); BOOST_CHECK_EQUAL( "OP_1" , item1->getString(0)); item1 = rec3->getItem("WELL"); BOOST_CHECK_EQUAL( "OP_3" , item1->getString(0)); BOOST_CHECK_EQUAL( false , deck->hasKeyword( "DIMENS" )); BOOST_CHECK_EQUAL( 2U , deck->numWarnings() ); { const std::pair >& warning = deck->getWarning( 0 ); const std::pair& location = warning.second; BOOST_CHECK_EQUAL( actionFile.string() , location.first); BOOST_CHECK_EQUAL( 2U , location.second); } { const std::pair >& warning = deck->getWarning( 1 ); const std::pair& location = warning.second; BOOST_CHECK_EQUAL( actionFile.string() , location.first); BOOST_CHECK_EQUAL( 6U , location.second); } }