From 56ff31df0afed213d2860c8ead16176e4bb71f19 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 6 Jun 2009 23:12:51 +0200 Subject: [PATCH] WIP: initial testbed for MObjectRef_test --- .../proc/mobject/mobject-ref-test.cpp | 55 +++++++++++++++++-- .../proc/mobject/placement-ref-test.cpp | 2 +- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/tests/components/proc/mobject/mobject-ref-test.cpp b/tests/components/proc/mobject/mobject-ref-test.cpp index d33771c99..2a291c402 100644 --- a/tests/components/proc/mobject/mobject-ref-test.cpp +++ b/tests/components/proc/mobject/mobject-ref-test.cpp @@ -22,17 +22,17 @@ #include "lib/test/run.hpp" -//#include "lib/lumitime.hpp" +#include "lib/lumitime.hpp" #include "proc/mobject/mobject.hpp" #include "proc/mobject/mobject-ref.hpp" #include "proc/mobject/placement.hpp" #include "proc/mobject/placement-ref.hpp" -//#include "proc/mobject/explicitplacement.hpp" +#include "proc/mobject/explicitplacement.hpp" #include "proc/mobject/test-dummy-mobject.hpp" #include -//using lumiera::Time; +using lumiera::Time; using std::string; using std::cout; @@ -40,12 +40,15 @@ using std::cout; namespace mobject { namespace test { - using namespace mobject::test; + using session::Clip; /*************************************************************************** * @test properties and behaviour of the external reference-mechanism for - * MObjects placed into the session. + * MObjects placed into the session. We create a simple, simulated + * "session" (no real session datastructure) and a mock PlacementIndex. + * Then we add two Placements, which can be used then to build + * MObjectRef instances to validate their behaviour. * @see mobject::Placement * @see mobject::MObject * @see mobject::PlacementRef_test @@ -53,9 +56,51 @@ namespace test { class MObjectRef_test : public Test { + typedef Placement PMObj; + typedef Placement PClip; + typedef TestPlacement PSub1; + + virtual void run (Arg) { + + // create data simulating a "Session" + PMObj pClip1 = asset::Media::create("test-1", asset::VIDEO)->createClip(); + PMObj pClip2 = asset::Media::create("test-2", asset::VIDEO)->createClip(); + + // set up a tie to fixed start positions + pClip1.chain(Time(10)); + pClip2.chain(Time(20)); + + ASSERT (pClip1->isValid()); + ASSERT (pClip2->isValid()); + ASSERT (2 == pClip1.use_count()); // one by the placement and one by the clip-Asset + ASSERT (2 == pClip2.use_count()); + + + // Prepare an (test)Index + typedef shared_ptr PIdx; + PIdx index (PlacementIndex::create()); + PMO& root = index->getRoot(); + reset_PlacementIndex(index); + + // Add the Clips to "session" + index->insert (pClip1, root); + index->insert (pClip2, root); + ASSERT (2 == index->size()); + + + // -----Tests------------------ + // -----Tests------------------ + + // verify clean state + index->remove (pClip1); + index->remove (pClip2); + ASSERT (0 == index->size()); + ASSERT (2 == pClip1.use_count()); + ASSERT (2 == pClip2.use_count()); + reset_PlacementIndex(); } }; diff --git a/tests/components/proc/mobject/placement-ref-test.cpp b/tests/components/proc/mobject/placement-ref-test.cpp index ff9d2f91d..e681843e8 100644 --- a/tests/components/proc/mobject/placement-ref-test.cpp +++ b/tests/components/proc/mobject/placement-ref-test.cpp @@ -61,7 +61,7 @@ namespace test { PSub p1(*new TestSubMO21); PSub p2(*new TestSubMO21); - p2.chain(Time(2)); + p2.chain(Time(2)); // define start time of Placement-2 to be at t=2 // Prepare an (test)Index backing the PlacementRefs typedef shared_ptr PIdx;