MCPcopy Create free account
hub / github.com/Geode-solutions/OpenGeode / test_serialize_manager

Function test_serialize_manager

tests/basic/test-attribute.cpp:375–421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

373}
374
375void test_serialize_manager( geode::AttributeManager& manager )
376{
377 const auto filename = "manager.out";
378 std::ofstream file{ filename, std::ofstream::binary };
379 geode::TContext context{};
380 geode::register_attribute_type< Foo, geode::Serializer >(
381 std::get< 0 >( context ), "Foo" );
382 geode::register_basic_serialize_pcontext( std::get< 0 >( context ) );
383 geode::register_attribute_type< std::array< double, 2 >,
384 geode::Serializer >( std::get< 0 >( context ), "array_double_2" );
385 geode::Serializer archive{ context, file };
386 archive.object( manager );
387 archive.adapter().flush();
388 geode::OpenGeodeBasicException::test( std::get< 1 >( context ).isValid(),
389 "Error while writing file: ", filename );
390
391 std::ifstream infile{ filename, std::ifstream::binary };
392 geode::AttributeManager reloaded_manager;
393 geode::TContext reload_context{};
394 geode::register_attribute_type< std::array< double, 30 >,
395 geode::Serializer >( std::get< 0 >( context ), "array_double_30" );
396 geode::register_basic_deserialize_pcontext(
397 std::get< 0 >( reload_context ) );
398 geode::register_attribute_type< Foo, geode::Deserializer >(
399 std::get< 0 >( reload_context ), "Foo" );
400 geode::register_attribute_type< std::array< double, 2 >,
401 geode::Deserializer >(
402 std::get< 0 >( reload_context ), "array_double_2" );
403 geode::Deserializer unarchive{ reload_context, infile };
404 unarchive.object( reloaded_manager );
405 const auto& adapter = unarchive.adapter();
406 geode::OpenGeodeBasicException::test(
407 adapter.error() == bitsery::ReaderError::NoError
408 && adapter.isCompletedSuccessfully()
409 && std::get< 1 >( context ).isValid(),
410 "Error while reading file: ", filename );
411
412 geode::OpenGeodeBasicException::test(
413 reloaded_manager.nb_elements() == manager.nb_elements(),
414 "Number of elements in reloaded AttributeManager is not "
415 "correct" );
416 geode::OpenGeodeBasicException::test(
417 managers_have_same_attributes( manager, reloaded_manager ),
418 "Number and names of attributes in reloaded AttributeManager "
419 "are not correct" );
420 check_attribute_values( manager, reloaded_manager );
421}
422
423void test_attribute_types( geode::AttributeManager& manager )
424{

Callers 1

testFunction · 0.85

Calls 7

check_attribute_valuesFunction · 0.85
testFunction · 0.70
errorMethod · 0.45
nb_elementsMethod · 0.45

Tested by

no test coverage detected