building upon all the preparations done during the last days, the compound of code connected to the `BufferProvide` can now be migrated down into the vault: - `BuffHandle` - `BufferProvider` - `BufferMetadata` - `BufferProviderSetup` - the simple standard implementations - `DiagnosticBufferProvider` - all directly related unit tests
97 lines
2.9 KiB
C++
97 lines
2.9 KiB
C++
/*
|
||
DummyPlayConnection(Test) - create and verify a simplified test render engine setup
|
||
|
||
Copyright (C)
|
||
2012, Hermann Vosseler <Ichthyostega@web.de>
|
||
|
||
**Lumiera** is free software; you can redistribute it and/or modify it
|
||
under the terms of the GNU General Public License as published by the
|
||
Free Software Foundation; either version 2 of the License, or (at your
|
||
option) any later version. See the file COPYING for further details.
|
||
|
||
* *****************************************************************/
|
||
|
||
/** @file dummy-play-connection-test.cpp
|
||
** unit test \ref DummyPlayConnection_test
|
||
*/
|
||
|
||
|
||
#include "test/run.hpp"
|
||
|
||
#include "vault/mem/buffhandle.hpp"
|
||
#include "steam/play/dummy-play-connection.hpp"
|
||
#include "vessel/spine/play-facade.hpp"
|
||
#include "lib/time/control.hpp"
|
||
|
||
|
||
|
||
namespace steam {
|
||
namespace play {
|
||
namespace test {
|
||
|
||
namespace time = lib::time;
|
||
|
||
using vault::mem::BuffHandle;
|
||
using vessel::spine::Play;
|
||
|
||
typedef time::Control<time::Duration> DurationControl;
|
||
|
||
typedef DummyPlayConnection<PlayTestFrames_Strategy> DummyPlayer;
|
||
|
||
|
||
/***************************************************************//**
|
||
* @test verify the OutputSlot interface and base implementation
|
||
* by performing full data exchange cycle. This is a
|
||
* kind of "dry run" for documentation purposes,
|
||
* both the actual OutputSlot implementation
|
||
* as the client using this slot are Mocks.
|
||
*/
|
||
class DummyPlayConnection_test : public Test
|
||
{
|
||
virtual void
|
||
run (Arg)
|
||
{
|
||
verify_simulatedPlayback();
|
||
}
|
||
|
||
|
||
void
|
||
verify_simulatedPlayback()
|
||
{
|
||
DummyPlayer dummy;
|
||
CHECK (!dummy.isWired());
|
||
|
||
Play::Controller player
|
||
= Play::facade().perform ( dummy.getAllModelPorts()
|
||
, dummy.provide_testOutputSlot());
|
||
CHECK ( dummy.isWired());
|
||
|
||
DurationControl playDuration;
|
||
player.controlDuration (playDuration);
|
||
|
||
// configure the controller to playback only for a fixed time duration
|
||
playDuration (dummy.getPlannedTestDuration());
|
||
|
||
CHECK (!player.is_playing());
|
||
|
||
player.play(true); // hit the start button
|
||
CHECK (player.is_playing());
|
||
|
||
dummy.waitUntilDue(); // test helper: block waiting until planned test should be done
|
||
|
||
CHECK (!player.is_playing()); // should have returned to pause, since we've set a fixed playback duration
|
||
CHECK (dummy.isWired());
|
||
|
||
player.close();
|
||
CHECK (!dummy.isWired());
|
||
CHECK (dummy.gotCorrectOutput());
|
||
}
|
||
};
|
||
|
||
|
||
/** Register this test class... */
|
||
LAUNCHER (DummyPlayConnection_test, "unit play");
|
||
|
||
|
||
|
||
}}} // namespace steam::play::test
|