Add RangeSet serialization

This commit is contained in:
Brad Chase
2017-05-17 15:02:08 -04:00
committed by Scott Schurr
parent 2d5ddbf1bf
commit 819ea46bf0
4 changed files with 104 additions and 2 deletions

View File

@@ -20,6 +20,8 @@
#include <BeastConfig.h>
#include <ripple/basics/RangeSet.h>
#include <ripple/beast/unit_test.h>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
namespace ripple
{
@@ -75,11 +77,41 @@ public:
set.erase(range(4u, 5u));
BEAST_EXPECT(to_string(set) == "1-2,6");
}
void
testSerialization()
{
auto works = [](RangeSet<std::uint32_t> const & orig)
{
std::stringstream ss;
boost::archive::binary_oarchive oa(ss);
oa << orig;
boost::archive::binary_iarchive ia(ss);
RangeSet<std::uint32_t> deser;
ia >> deser;
return orig == deser;
};
RangeSet<std::uint32_t> rs;
BEAST_EXPECT(works(rs));
rs.insert(3);
BEAST_EXPECT(works(rs));
rs.insert(range(7u, 10u));
BEAST_EXPECT(works(rs));
}
void
run()
{
testPrevMissing();
testToString();
testSerialization();
}
};