diff options
Diffstat (limited to 'slicer/test/run-slicer.cpp')
-rw-r--r-- | slicer/test/run-slicer.cpp | 61 |
1 files changed, 59 insertions, 2 deletions
diff --git a/slicer/test/run-slicer.cpp b/slicer/test/run-slicer.cpp index 6a73736..897d9ee 100644 --- a/slicer/test/run-slicer.cpp +++ b/slicer/test/run-slicer.cpp @@ -5,10 +5,66 @@ #include <boost/filesystem/operations.hpp> #include <boost/format.hpp> #include <boost/function.hpp> +#include <boost/assert.hpp> #include <types.h> namespace fs = boost::filesystem; +template<typename T, typename Serializer> +void +verify(const fs::path & root, const fs::path & tmp, const fs::path & infile, const boost::function<void(const T &)> & check = NULL) +{ + const fs::path input = root / "initial" / infile; + const fs::path output = tmp / infile; + + fprintf(stderr, "%s : Deserialize\n", input.string().c_str()); + IceInternal::Handle<T> p = Slicer::Deserialize<Serializer, T>(input); + fprintf(stderr, "%s : Check1\n", input.string().c_str()); + if (check) check(*p); + fprintf(stderr, "%s : Serialize -> %s\n", input.string().c_str(), output.string().c_str()); + Slicer::Serialize<Serializer>(p, output); + fprintf(stderr, "%s : Check2\n", input.string().c_str()); + if (check) check(*p); + fprintf(stderr, "%s : OK\n", input.string().c_str()); +} + +void +checkOptionals_notset(const TestModule::Optionals & opts) +{ + BOOST_ASSERT(!opts.optSimple); + BOOST_ASSERT(!opts.optStruct); + BOOST_ASSERT(!opts.optClass); + BOOST_ASSERT(!opts.optSeq); + BOOST_ASSERT(!opts.optDict); +} + +void +checkOptionals_areset(const TestModule::Optionals & opts) +{ + BOOST_ASSERT(opts.optSimple); + BOOST_ASSERT(opts.optSimple == 4); + BOOST_ASSERT(opts.optStruct); + BOOST_ASSERT(opts.optStruct->a == 1); + BOOST_ASSERT(opts.optStruct->b == 2); + BOOST_ASSERT(opts.optClass); + BOOST_ASSERT((*opts.optClass)->a == 1); + BOOST_ASSERT((*opts.optClass)->b == 2); + BOOST_ASSERT(opts.optSeq->size() == 2); + BOOST_ASSERT((*opts.optSeq)[0]->a == 3); + BOOST_ASSERT((*opts.optSeq)[0]->b == 4); + BOOST_ASSERT((*opts.optSeq)[1]->a == 5); + BOOST_ASSERT((*opts.optSeq)[1]->b == 6); + BOOST_ASSERT(opts.optDict); + BOOST_ASSERT(opts.optDict->size() == 2); + BOOST_ASSERT(opts.optDict->find(1) == opts.optDict->end()); + BOOST_ASSERT(opts.optDict->find(10) != opts.optDict->end()); + BOOST_ASSERT(opts.optDict->find(10)->second->a == 11); + BOOST_ASSERT(opts.optDict->find(10)->second->b == 12); + BOOST_ASSERT(opts.optDict->find(13) != opts.optDict->end()); + BOOST_ASSERT(opts.optDict->find(13)->second->a == 14); + BOOST_ASSERT(opts.optDict->find(13)->second->b == 15); +} + int main(int, char ** argv) { @@ -26,8 +82,9 @@ main(int, char ** argv) fs::create_directory(tmp); // Execute - TestModule::BuiltInsPtr p(new TestModule::BuiltIns()); - Slicer::Serialize<Slicer::Xml>(p, tmp / "out.xml"); + verify<TestModule::BuiltIns, Slicer::Xml>(root, tmp, "builtins.xml"); + verify<TestModule::Optionals, Slicer::Xml>(root, tmp, "optionals-notset.xml", checkOptionals_notset); + verify<TestModule::Optionals, Slicer::Xml>(root, tmp, "optionals-areset.xml", checkOptionals_areset); return 0; } |