Merge pull request #793 from joakim-hove/serialize-summary-state

Add serialization of SummaryState
This commit is contained in:
Bård Skaflestad
2019-06-05 15:45:13 +02:00
committed by GitHub
3 changed files with 213 additions and 0 deletions

View File

@@ -3225,4 +3225,84 @@ BOOST_AUTO_TEST_CASE(SummaryState_TOTAL) {
BOOST_CHECK_EQUAL(st.get_elapsed(), 200);
}
bool equal(const SummaryState& st1 , const SummaryState& st2) {
if (st1.size() != st2.size())
return false;
{
const auto& wells2 = st2.wells();
if (wells2.size() != st1.wells().size())
return false;
for (const auto& well : st1.wells()) {
auto f = std::find(wells2.begin(), wells2.end(), well);
if (f == wells2.end())
return false;
}
}
{
const auto& groups2 = st2.groups();
if (groups2.size() != st1.groups().size())
return false;
for (const auto& group : st1.groups()) {
auto f = std::find(groups2.begin(), groups2.end(), group);
if (f == groups2.end())
return false;
}
}
for (const auto& value_pair : st1) {
const std::string& key = value_pair.first;
double value = value_pair.second;
if (value != st2.get(key))
return false;
}
return st1.get_elapsed() == st2.get_elapsed();
}
void test_serialize(const SummaryState& st) {
SummaryState st2;
auto serial = st.serialize();
st2.deserialize(serial);
BOOST_CHECK( equal(st, st2));
st2.update_elapsed(1234567.09);
st2.update("FOPT", 200);
st2.deserialize(serial);
BOOST_CHECK( equal(st, st2));
}
BOOST_AUTO_TEST_CASE(serialize_sumary_state) {
SummaryState st;
test_serialize(st);
st.update_elapsed(1000);
test_serialize(st);
st.update("FOPT", 100);
test_serialize(st);
st.update("FGPT", 100);
test_serialize(st);
st.update_well_var("OP_1", "WOPR", 1000);
test_serialize(st);
st.update_well_var("OP_2", "WGOR", 0.67);
test_serialize(st);
st.update_group_var("G1", "GOPR", 1000);
test_serialize(st);
st.update_group_var("G2", "GGOR", 0.67);
test_serialize(st);
}
BOOST_AUTO_TEST_SUITE_END()