2013-10-14 09:54:43 -05:00
|
|
|
/*
|
|
|
|
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/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define BOOST_TEST_MODULE ParserTests
|
|
|
|
#include <stdexcept>
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
#include <opm/parser/eclipse/RawDeck/StarToken.hpp>
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(NoStarThrows) {
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_REQUIRE_THROW(Opm::StarToken st("Hei...") , std::invalid_argument);
|
2013-10-14 09:54:43 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_AUTO_TEST_CASE(InvalidCountThrow) {
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_REQUIRE_THROW( Opm::StarToken st("X*") , std::invalid_argument);
|
|
|
|
BOOST_REQUIRE_THROW( Opm::StarToken st("1.25*") , std::invalid_argument);
|
|
|
|
BOOST_REQUIRE_THROW( Opm::StarToken st("-3*") , std::invalid_argument);
|
|
|
|
BOOST_REQUIRE_THROW( Opm::StarToken st("0*") , std::invalid_argument);
|
|
|
|
BOOST_REQUIRE_THROW( Opm::StarToken st("*123") , std::invalid_argument);
|
2013-10-14 09:54:43 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_AUTO_TEST_CASE(CountCorrect) {
|
2014-09-18 07:47:05 -05:00
|
|
|
Opm::StarToken st1("*");
|
|
|
|
Opm::StarToken st2("5*");
|
|
|
|
Opm::StarToken st3("54*");
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_CHECK(st1.countString() == "");
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK(st2.countString() == "5");
|
|
|
|
BOOST_CHECK(st3.countString() == "54");
|
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_CHECK(st1.valueString() == "");
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK(st2.valueString() == "");
|
|
|
|
BOOST_CHECK(st3.valueString() == "");
|
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_CHECK(!st1.hasValue());
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK(!st2.hasValue());
|
|
|
|
BOOST_CHECK(!st3.hasValue());
|
|
|
|
|
|
|
|
BOOST_REQUIRE_EQUAL(1U , st1.count());
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_REQUIRE_EQUAL(5U , st2.count());
|
|
|
|
BOOST_REQUIRE_EQUAL(54U , st3.count());
|
2013-10-14 09:54:43 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(NoValueGetValueThrow) {
|
2014-09-18 07:47:05 -05:00
|
|
|
Opm::StarToken st1("*");
|
|
|
|
Opm::StarToken st2("5*");
|
2013-10-14 09:54:43 -05:00
|
|
|
BOOST_CHECK_EQUAL( false , st1.hasValue());
|
|
|
|
BOOST_CHECK_EQUAL( false , st2.hasValue());
|
|
|
|
}
|
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_AUTO_TEST_CASE(StarNoCountThrows) {
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK_THROW( Opm::StarToken st1("*10") , std::invalid_argument);
|
2013-10-14 09:54:43 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_AUTO_TEST_CASE(CorrectValueString) {
|
|
|
|
Opm::StarToken st1("1*10.09");
|
|
|
|
Opm::StarToken st2("5*20.13");
|
|
|
|
Opm::StarToken st3("1*'123'");
|
|
|
|
Opm::StarToken st4("1*123*456");
|
2013-10-14 09:54:43 -05:00
|
|
|
BOOST_CHECK_EQUAL( true , st1.hasValue());
|
|
|
|
BOOST_CHECK_EQUAL( true , st2.hasValue());
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK_EQUAL( true , st3.hasValue());
|
|
|
|
BOOST_CHECK_EQUAL( true , st4.hasValue());
|
2013-10-14 09:54:43 -05:00
|
|
|
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK_EQUAL( "10.09" , st1.valueString());
|
|
|
|
BOOST_CHECK_EQUAL( "20.13" , st2.valueString());
|
|
|
|
BOOST_CHECK_EQUAL( "'123'" , st3.valueString());
|
|
|
|
BOOST_CHECK_EQUAL( "123*456" , st4.valueString());
|
2013-10-14 09:54:43 -05:00
|
|
|
}
|
|
|
|
|
2013-10-14 14:24:03 -05:00
|
|
|
BOOST_AUTO_TEST_CASE( ContainsStar_WithStar_ReturnsTrue ) {
|
2014-09-11 06:05:32 -05:00
|
|
|
std::string countString, valueString;
|
|
|
|
BOOST_CHECK_EQUAL( true , Opm::isStarToken("*", countString, valueString) );
|
|
|
|
BOOST_CHECK_EQUAL( true , Opm::isStarToken("*1", countString, valueString) );
|
|
|
|
BOOST_CHECK_EQUAL( true , Opm::isStarToken("1*", countString, valueString) );
|
|
|
|
BOOST_CHECK_EQUAL( true , Opm::isStarToken("1*2", countString, valueString) );
|
2014-12-08 09:34:28 -06:00
|
|
|
|
2014-09-11 06:05:32 -05:00
|
|
|
BOOST_CHECK_EQUAL( false , Opm::isStarToken("12", countString, valueString) );
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK_EQUAL( false , Opm::isStarToken("'12*34'", countString, valueString) );
|
2013-10-14 14:24:03 -05:00
|
|
|
}
|
2014-07-10 06:23:37 -05:00
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( readValueToken_basic_validity_tests ) {
|
|
|
|
BOOST_CHECK_THROW( Opm::readValueToken<int>("3.3"), std::invalid_argument );
|
|
|
|
BOOST_CHECK_THROW( Opm::readValueToken<double>("truls"), std::invalid_argument );
|
|
|
|
BOOST_CHECK_EQUAL( "3.3", Opm::readValueToken<std::string>("3.3") );
|
2015-07-23 05:17:48 -05:00
|
|
|
BOOST_CHECK_CLOSE( 3.3, Opm::readValueToken<double>("3.3e0"), 1e-6 );
|
|
|
|
BOOST_CHECK_CLOSE( 3.3, Opm::readValueToken<double>("3.3d0"), 1e-6 );
|
|
|
|
BOOST_CHECK_CLOSE( 3.3, Opm::readValueToken<double>("3.3E0"), 1e-6 );
|
|
|
|
BOOST_CHECK_CLOSE( 3.3, Opm::readValueToken<double>("3.3D0"), 1e-6 );
|
2014-07-10 06:23:37 -05:00
|
|
|
BOOST_CHECK_EQUAL( "OLGA", Opm::readValueToken<std::string>("OLGA") );
|
2014-09-18 07:47:05 -05:00
|
|
|
BOOST_CHECK_EQUAL( "OLGA", Opm::readValueToken<std::string>("'OLGA'") );
|
|
|
|
BOOST_CHECK_EQUAL( "123*456", Opm::readValueToken<std::string>("123*456") );
|
|
|
|
BOOST_CHECK_EQUAL( "123*456", Opm::readValueToken<std::string>("'123*456'") );
|
2014-07-10 06:23:37 -05:00
|
|
|
}
|