lumiera_documentation/tests/steam/play/dummy-play-connection-test.cpp
Ichthyostega 7dee16ba90 BufferProvider: relocate into Vault Layer
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
2026-03-08 00:53:41 +01:00

97 lines
2.9 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
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