Skip to content
Snippets Groups Projects
Commit 8d89c74f authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Extend ArMemMemoryTest

parent 9f189106
No related branches found
No related tags found
2 merge requests!192Fix bugs in ArMem and make disk loading and storing nicer,!188ArMem Updates
......@@ -29,6 +29,7 @@
#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
#include <RobotAPI/libraries/armem/server/wm/memory_definitions.h>
#include <RobotAPI/libraries/armem/core/error.h>
#include <RobotAPI/libraries/armem/core/operations.h>
#include <iostream>
#include <SimoxUtility/meta/type_name.h>
......@@ -38,6 +39,8 @@
namespace armem = armarx::armem;
namespace aron = armarx::aron;
namespace wm = armarx::armem::wm;
BOOST_AUTO_TEST_CASE(test_time_to_string)
{
......@@ -78,6 +81,157 @@ BOOST_AUTO_TEST_CASE(test_time_to_string)
}
// Public interface tests
namespace ArMemMemoryTest
{
struct APITestFixture
{
wm::EntityInstance instance { 0 };
wm::EntitySnapshot snapshot { armem::Time::microSeconds(1000) };
wm::Entity entity { "entity" };
wm::ProviderSegment provSeg { "provider" };
wm::CoreSegment coreSeg { "core" };
wm::Memory memory { "memory" };
void test_add_instance(wm::EntityInstance& added, const wm::EntitySnapshot& parent)
{
BOOST_TEST_CONTEXT("Added: " << armem::print(added) << "\n Parent: " << armem::print(parent))
{
const int index = 0;
BOOST_CHECK_EQUAL(added.index(), index);
BOOST_CHECK_EQUAL(parent.size(), 1);
BOOST_CHECK(parent.hasInstance(index));
BOOST_CHECK_EQUAL(&parent.getInstance(index), &added);
}
}
void test_add_snapshot(wm::EntitySnapshot& added, const wm::Entity& parent)
{
BOOST_TEST_CONTEXT("Added: " << armem::print(added) << "\n Parent: " << armem::print(parent))
{
const armem::Time time = armem::Time::microSeconds(1000);
BOOST_CHECK_EQUAL(added.time(), time);
BOOST_CHECK_EQUAL(parent.size(), 1);
BOOST_CHECK(parent.hasSnapshot(time));
BOOST_CHECK_EQUAL(&parent.getSnapshot(time), &added);
}
}
void test_add_entity(wm::Entity& added, const wm::ProviderSegment& parent)
{
BOOST_TEST_CONTEXT("Added: " << armem::print(added) << "\n Parent: " << armem::print(parent))
{
const std::string name = "entity";
BOOST_CHECK_EQUAL(added.name(), name);
BOOST_CHECK_EQUAL(parent.size(), 1);
BOOST_CHECK(parent.hasEntity(name));
BOOST_CHECK_EQUAL(&parent.getEntity(name), &added);
}
}
void test_add_provider_segment(wm::ProviderSegment& added, const wm::CoreSegment& parent)
{
BOOST_TEST_CONTEXT("Added: " << armem::print(added) << "\n Parent: " << armem::print(parent))
{
const std::string name = "provider";
BOOST_CHECK_EQUAL(added.name(), name);
BOOST_CHECK_EQUAL(parent.size(), 1);
BOOST_CHECK(parent.hasProviderSegment(name));
BOOST_CHECK_EQUAL(&parent.getProviderSegment(name), &added);
}
}
void test_add_core_segment(wm::CoreSegment& added, const wm::Memory& parent)
{
BOOST_TEST_CONTEXT("Added: " << armem::print(added) << "\n Parent: " << armem::print(parent))
{
const std::string name = "core";
BOOST_CHECK_EQUAL(added.name(), name);
BOOST_CHECK_EQUAL(parent.size(), 1);
BOOST_CHECK(parent.hasCoreSegment(name));
BOOST_CHECK_EQUAL(&parent.getCoreSegment(name), &added);
}
}
};
}
BOOST_FIXTURE_TEST_SUITE(APITest, ArMemMemoryTest::APITestFixture)
BOOST_AUTO_TEST_CASE(test_add_instance_no_args)
{
test_add_instance(snapshot.addInstance(), snapshot);
}
BOOST_AUTO_TEST_CASE(test_add_instance_copy)
{
test_add_instance(snapshot.addInstance(instance), snapshot);
}
BOOST_AUTO_TEST_CASE(test_add_instance_move)
{
test_add_instance(snapshot.addInstance(std::move(instance)), snapshot);
}
BOOST_AUTO_TEST_CASE(test_add_snapshot_time)
{
test_add_snapshot(entity.addSnapshot(armem::Time::microSeconds(1000)), entity);
}
BOOST_AUTO_TEST_CASE(test_add_snapshot_copy)
{
test_add_snapshot(entity.addSnapshot(snapshot), entity);
}
BOOST_AUTO_TEST_CASE(test_add_snapshot_move)
{
test_add_snapshot(entity.addSnapshot(std::move(snapshot)), entity);
}
BOOST_AUTO_TEST_CASE(test_add_entity_name)
{
test_add_entity(provSeg.addEntity("entity"), provSeg);
}
BOOST_AUTO_TEST_CASE(test_add_entity_copy)
{
test_add_entity(provSeg.addEntity(entity), provSeg);
}
BOOST_AUTO_TEST_CASE(test_add_entity_move)
{
test_add_entity(provSeg.addEntity(std::move(entity)), provSeg);
}
BOOST_AUTO_TEST_CASE(test_add_provider_segment_name)
{
test_add_provider_segment(coreSeg.addProviderSegment("provider"), coreSeg);
}
BOOST_AUTO_TEST_CASE(test_add_provider_segment_copy)
{
test_add_provider_segment(coreSeg.addProviderSegment(provSeg), coreSeg);
}
BOOST_AUTO_TEST_CASE(test_add_provider_segment_move)
{
test_add_provider_segment(coreSeg.addProviderSegment(std::move(provSeg)), coreSeg);
}
BOOST_AUTO_TEST_CASE(test_add_core_segment_name)
{
test_add_core_segment(memory.addCoreSegment("core"), memory);
}
BOOST_AUTO_TEST_CASE(test_add_core_segment_copy)
{
test_add_core_segment(memory.addCoreSegment(coreSeg), memory);
}
BOOST_AUTO_TEST_CASE(test_add_core_segment_move)
{
test_add_core_segment(memory.addCoreSegment(std::move(coreSeg)), memory);
}
BOOST_AUTO_TEST_SUITE_END()
// COPY/MOVE CTOR/OP TESTS
namespace ArMemMemoryTest
......@@ -229,22 +383,22 @@ BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(test_key_ctors)
{
armem::wm::EntityInstance instance(10);
wm::EntityInstance instance(10);
BOOST_CHECK_EQUAL(instance.index(), 10);
armem::wm::EntitySnapshot snapshot(armem::Time::milliSeconds(100));
wm::EntitySnapshot snapshot(armem::Time::milliSeconds(100));
BOOST_CHECK_EQUAL(snapshot.time(), armem::Time::milliSeconds(100));
armem::wm::Entity entity("entity");
wm::Entity entity("entity");
BOOST_CHECK_EQUAL(entity.name(), "entity");
armem::wm::ProviderSegment provSeg("provSeg");
wm::ProviderSegment provSeg("provSeg");
BOOST_CHECK_EQUAL(provSeg.name(), "provSeg");
armem::wm::CoreSegment coreSeg("coreSeg");
wm::CoreSegment coreSeg("coreSeg");
BOOST_CHECK_EQUAL(coreSeg.name(), "coreSeg");
armem::wm::Memory memory("memory");
wm::Memory memory("memory");
BOOST_CHECK_EQUAL(memory.name(), "memory");
}
......@@ -276,14 +430,14 @@ void checkMoved_d_ltm(const T& moved)
}
template <>
struct CustomChecks<armem::wm::EntityInstance>
struct CustomChecks<wm::EntityInstance>
{
static void checkEqual(const armem::wm::EntityInstance& lhs, const armem::wm::EntityInstance& rhs)
static void checkEqual(const wm::EntityInstance& lhs, const wm::EntityInstance& rhs)
{
BOOST_CHECK_EQUAL(lhs.metadata(), rhs.metadata());
BOOST_CHECK_EQUAL(lhs.data(), rhs.data());
}
static void checkMoved(const armem::wm::EntityInstance& moved)
static void checkMoved(const wm::EntityInstance& moved)
{
BOOST_CHECK_EQUAL(moved.data(), nullptr);
}
......@@ -493,7 +647,7 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
void reset() override
{
in = T {id};
if constexpr(std::is_same_v<T, armem::wm::Memory>)
if constexpr(std::is_same_v<T, wm::Memory>)
{
in.addCoreSegment("C");
}
......@@ -592,12 +746,12 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
BOOST_AUTO_TEST_CASE(test_copy_move_ctors_ops)
{
{
InstanceCopyMoveCtorsOpsTest<armem::wm::EntityInstance>().test();
CopyMoveCtorsOpsTest<armem::wm::EntitySnapshot>().test();
CopyMoveCtorsOpsTest<armem::wm::Entity>().test();
CopyMoveCtorsOpsTest<armem::wm::ProviderSegment>().test();
CopyMoveCtorsOpsTest<armem::wm::CoreSegment>().test();
CopyMoveCtorsOpsTest<armem::wm::Memory>().test();
InstanceCopyMoveCtorsOpsTest<wm::EntityInstance>().test();
CopyMoveCtorsOpsTest<wm::EntitySnapshot>().test();
CopyMoveCtorsOpsTest<wm::Entity>().test();
CopyMoveCtorsOpsTest<wm::ProviderSegment>().test();
CopyMoveCtorsOpsTest<wm::CoreSegment>().test();
CopyMoveCtorsOpsTest<wm::Memory>().test();
}
/*{
InstanceCopyMoveCtorsOpsTest<armem::ltm::EntityInstance>().test();
......@@ -623,7 +777,7 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
{
armem::EntityUpdate update;
armem::wm::Memory memory("Memory");
wm::Memory memory("Memory");
BOOST_CHECK_EQUAL(memory.name(), "Memory");
{
update.entityID = armem::MemoryID::fromString("OtherMemory/SomeSegment");
......@@ -632,7 +786,7 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
BOOST_CHECK_THROW(memory.update(update), armem::error::MissingEntry);
}
armem::wm::CoreSegment& coreSegment = memory.addCoreSegment("ImageRGB");
wm::CoreSegment& coreSegment = memory.addCoreSegment("ImageRGB");
BOOST_CHECK_EQUAL(coreSegment.name(), "ImageRGB");
BOOST_CHECK(memory.hasCoreSegment(coreSegment.name()));
{
......@@ -643,7 +797,7 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
//BOOST_CHECK_THROW(coreSegment.update(update), armem::error::MissingEntry);
}
armem::wm::ProviderSegment& providerSegment = coreSegment.addProviderSegment("SomeRGBImageProvider");
wm::ProviderSegment& providerSegment = coreSegment.addProviderSegment("SomeRGBImageProvider");
BOOST_CHECK_EQUAL(providerSegment.name(), "SomeRGBImageProvider");
BOOST_CHECK(coreSegment.hasProviderSegment(providerSegment.name()));
{
......@@ -667,12 +821,12 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
BOOST_CHECK(providerSegment.hasEntity("image"));
BOOST_CHECK(!providerSegment.hasEntity("other_image"));
armem::wm::Entity& entity = providerSegment.getEntity("image");
wm::Entity& entity = providerSegment.getEntity("image");
BOOST_CHECK_EQUAL(entity.name(), "image");
BOOST_CHECK_EQUAL(entity.size(), 1);
BOOST_CHECK(entity.hasSnapshot(update.timeCreated));
armem::wm::EntitySnapshot& entitySnapshot = entity.getSnapshot(update.timeCreated);
wm::EntitySnapshot& entitySnapshot = entity.getSnapshot(update.timeCreated);
BOOST_CHECK_EQUAL(entitySnapshot.size(), update.instancesData.size());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment