use correct size of bit set, test added

This commit is contained in:
Franz G. Fuchs
2019-04-26 13:56:54 +02:00
committed by Atgeirr Flø Rasmussen
parent 2fbf3c4fc9
commit 6efe981234
3 changed files with 29 additions and 4 deletions

View File

@@ -38,7 +38,8 @@ enum class Phase {
POLYMER = 4,
ENERGY = 5,
POLYMW = 6,
FOAM = 7
FOAM = 7,
NUMPHASES // only used to get correct size of the bitset in class Phases
};
Phase get_phase( const std::string& );
@@ -53,7 +54,7 @@ class Phases {
bool active( Phase ) const noexcept;
size_t size() const noexcept;
private:
std::bitset< 7 > bits;
std::bitset< static_cast<int>(Phase::NUMPHASES) > bits;
};

View File

@@ -199,11 +199,11 @@ Runspec::Runspec( const Deck& deck ) :
active_phases( Phases( deck.hasKeyword( "OIL" ),
deck.hasKeyword( "GAS" ),
deck.hasKeyword( "WATER" ),
deck.hasKeyword( "FOAM" ),
deck.hasKeyword( "SOLVENT" ),
deck.hasKeyword( "POLYMER" ),
deck.hasKeyword( "THERMAL" ),
deck.hasKeyword( "POLYMW" ) ) ),
deck.hasKeyword( "POLYMW" ),
deck.hasKeyword( "FOAM" ) ) ),
m_tabdims( deck ),
endscale( deck ),
welldims( deck ),

View File

@@ -548,3 +548,27 @@ BOOST_AUTO_TEST_CASE(PolymerMolecularWeight) {
BOOST_CHECK( phases.active( Phase::POLYMER ) );
BOOST_CHECK( phases.active( Phase::POLYMW) );
}
BOOST_AUTO_TEST_CASE(Foam) {
const std::string input = R"(
RUNSPEC
OIL
GAS
WATER
FOAM
)";
Parser parser;
auto deck = parser.parseString(input);
Runspec runspec( deck );
const auto& phases = runspec.phases();
BOOST_CHECK_EQUAL( 4, phases.size() );
BOOST_CHECK( phases.active( Phase::OIL ) );
BOOST_CHECK( phases.active( Phase::GAS ) );
BOOST_CHECK( phases.active( Phase::WATER ) );
BOOST_CHECK( phases.active( Phase::FOAM) );
}