Merge pull request #793 from joakim-hove/serialize-summary-state
Add serialization of SummaryState
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user