From 2cd69fcbdad42c7f275d9ac94bfe4e0332b3c09e Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Fri, 30 Oct 2015 14:01:36 +0100 Subject: [PATCH] Added iget() and iset() methods to DynamicVector. --- .../EclipseState/Schedule/DynamicVector.hpp | 9 +++++++ .../Schedule/tests/DynamicVectorTests.cpp | 27 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/opm/parser/eclipse/EclipseState/Schedule/DynamicVector.hpp b/opm/parser/eclipse/EclipseState/Schedule/DynamicVector.hpp index 4930be2e6..2ca5ecdd0 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/DynamicVector.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/DynamicVector.hpp @@ -68,6 +68,12 @@ namespace Opm { } + const T& iget(size_t index) const { + return (*this)[index]; + } + + + T& operator[](size_t index) { if (index >= m_timeMap->size()) throw std::range_error("Index value is out range."); @@ -78,6 +84,9 @@ namespace Opm { return m_data[index]; } + void iset(size_t index, T value) { + (*this)[index] = value; + } private: diff --git a/opm/parser/eclipse/EclipseState/Schedule/tests/DynamicVectorTests.cpp b/opm/parser/eclipse/EclipseState/Schedule/tests/DynamicVectorTests.cpp index 4b0a76cf1..a6e5c30ac 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/tests/DynamicVectorTests.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/tests/DynamicVectorTests.cpp @@ -68,3 +68,30 @@ BOOST_AUTO_TEST_CASE(DynamicVectorSet) { BOOST_CHECK_THROW( state[5] = 99 , std::range_error); } + + +BOOST_AUTO_TEST_CASE(DynamicVectorPtr) { + boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1); + Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate))); + Opm::DynamicVector * state = new Opm::DynamicVector( timeMap , 137 ); + for (size_t i = 0; i < 4; i++) + timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 )); + + BOOST_CHECK_EQUAL( 137 , state->iget(0) ); + BOOST_CHECK_EQUAL( 137 , state->iget(1) ); + BOOST_CHECK_EQUAL( 137 , state->iget(2) ); + BOOST_CHECK_EQUAL( 137 , state->iget(3) ); + BOOST_CHECK_EQUAL( 137 , state->iget(4) ); + + state->iset(2 , 99); + BOOST_CHECK_EQUAL( 137 , state->iget(1) ); + BOOST_CHECK_EQUAL( 99 , state->iget(2) ); + BOOST_CHECK_EQUAL( 137 , state->iget(3) ); + + state->iset(0,88); + BOOST_CHECK_EQUAL( 88 , state->iget(0)); + BOOST_CHECK_THROW( state->iset(5 , 99) , std::range_error); + + delete state; +} +