get the sesison element-tracker integration test to pass
This commit is contained in:
parent
7c758b04db
commit
08d90be1b6
5 changed files with 20 additions and 9 deletions
|
|
@ -68,6 +68,7 @@ namespace lib {
|
|||
|
||||
using lumiera::P;
|
||||
using std::tr1::function;
|
||||
using util::isSameObject;
|
||||
|
||||
/**
|
||||
* Registry for tracking object instances.
|
||||
|
|
@ -229,6 +230,13 @@ namespace lib {
|
|||
getRegistry = RegistryLink(); // empty accessor function
|
||||
}
|
||||
|
||||
static bool
|
||||
is_attached_to (Registry const& someRegistry)
|
||||
{
|
||||
return bool(getRegistry)
|
||||
&& isSameObject (someRegistry, getRegistry());
|
||||
}
|
||||
|
||||
protected:
|
||||
static RegistryLink getRegistry;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ namespace asset {
|
|||
* instances and immediately creates a new one.
|
||||
* @param nameID (optional) an ID to use; if omitted an ID
|
||||
* will be default created, based on the kind of Asset.
|
||||
* @throw error::Invalid in case of ID clash with an existing Asset
|
||||
* @throw error::Invalid in case of ID clash with an existing Asset
|
||||
* @return an Struct smart ptr linked to the internally registered smart ptr
|
||||
* created as a side effect of calling the concrete Struct subclass ctor.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -120,9 +120,12 @@ namespace session {
|
|||
inline
|
||||
SessionInterfaceModules::~SessionInterfaceModules()
|
||||
{
|
||||
asset::Sequence::deactivateRegistryLink();
|
||||
asset::Timeline::deactivateRegistryLink();
|
||||
}
|
||||
if (asset::Sequence::is_attached_to (sequenceRegistry_))
|
||||
asset::Sequence::deactivateRegistryLink();
|
||||
|
||||
if (asset::Timeline::is_attached_to (timelineRegistry_)) // as session dtor is invoked automatically (smart-ptr),
|
||||
asset::Timeline::deactivateRegistryLink(); // another new session might already have grabbed
|
||||
} // the Timeline / Sequence registration service.
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ out: DummyMO\.[0-9]{3}
|
|||
END
|
||||
|
||||
|
||||
PLANNED "SessionElementTracker_test" SessionElementTracker_test <<END
|
||||
TEST "SessionElementTracker_test" SessionElementTracker_test <<END
|
||||
END
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -181,13 +181,13 @@ namespace test {
|
|||
uint num_timelines = sess->timelines.size();
|
||||
CHECK (0 < num_timelines);
|
||||
|
||||
PTimeline specialTimeline (asset::Struct::retrieve (Query<Timeline> ("id(testical)")));
|
||||
PTimeline specialTimeline (asset::Struct::retrieve.newInstance<Timeline> ("testical"));
|
||||
CHECK (specialTimeline);
|
||||
CHECK (num_timelines + 1 == sess->timelines.size());
|
||||
CHECK (specialTimeline == sess->timelines[num_timelines]); // got appended at the end of the tracking table
|
||||
CHECK (specialTimeline.use_count() == 4); // we, the AssetManager and the session /////TODO plus one for fake-configrules
|
||||
CHECK (specialTimeline.use_count() == 3); // we, the AssetManager and the session
|
||||
|
||||
PTimeline anotherTimeline (asset::Struct::retrieve (Query<Timeline> ()));
|
||||
PTimeline anotherTimeline (asset::Struct::retrieve.newInstance<Timeline>());
|
||||
CHECK (num_timelines + 2 == sess->timelines.size());
|
||||
CHECK (specialTimeline == sess->timelines[num_timelines]);
|
||||
CHECK (anotherTimeline == sess->timelines[num_timelines+1]); // new one got appended at the end
|
||||
|
|
@ -212,7 +212,7 @@ namespace test {
|
|||
{
|
||||
REQUIRE (1 < aTimeline_in_session.use_count(), "test object should still be attached to session");
|
||||
Session::current.reset();
|
||||
aTimeline_in_session->detach(); // should be a no-op and not cause any invalid access
|
||||
aTimeline_in_session->detach(); // should be a no-op and not cause any invalid access
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue