54 lines
2.2 KiB
C++
54 lines
2.2 KiB
C++
#include "VideoIOBackendFactory.h"
|
|
#include "VideoIOTypes.h"
|
|
|
|
#include <iostream>
|
|
|
|
namespace
|
|
{
|
|
int gFailures = 0;
|
|
|
|
void Expect(bool condition, const char* message)
|
|
{
|
|
if (condition)
|
|
return;
|
|
|
|
std::cerr << "FAIL: " << message << "\n";
|
|
++gFailures;
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
const std::vector<VideoIOBackendDescriptor> backends = ListVideoIOBackendDescriptors();
|
|
Expect(!backends.empty(), "backend registry is not empty");
|
|
Expect(backends.front().backendId == VideoIOBackendId::DeckLink, "decklink is registered");
|
|
Expect(std::string(backends.front().backendName) == "decklink", "decklink registry name is stable");
|
|
|
|
const VideoIOBackendDescriptor* descriptor = GetVideoIOBackendDescriptor(VideoIOBackendId::DeckLink);
|
|
Expect(descriptor != nullptr, "decklink descriptor can be looked up");
|
|
Expect(descriptor != nullptr && std::string(descriptor->displayName) == "Blackmagic DeckLink", "decklink descriptor exposes display name");
|
|
Expect(descriptor != nullptr && std::string(descriptor->unavailableTitle) == "This application requires the selected video I/O drivers installed.", "decklink descriptor exposes unavailable title");
|
|
Expect(IsVideoIOBackendUnavailableError(VideoIOBackendId::DeckLink, "Please install the Blackmagic DeckLink drivers to use the features of this application."), "decklink unavailable message is recognized");
|
|
Expect(!IsVideoIOBackendUnavailableError(VideoIOBackendId::DeckLink, "some other error"), "non-driver errors are not treated as backend unavailable");
|
|
|
|
std::string error;
|
|
std::unique_ptr<VideoIODevice> device = CreateVideoIODevice(VideoIOBackendId::DeckLink, error);
|
|
Expect(device != nullptr, "decklink backend factory returns a device");
|
|
Expect(!device || device->BackendId() == VideoIOBackendId::DeckLink, "decklink backend reports decklink id");
|
|
Expect(error.empty(), "supported backend does not produce an error");
|
|
|
|
error.clear();
|
|
device = CreateVideoIODevice(static_cast<VideoIOBackendId>(999), error);
|
|
Expect(device == nullptr, "unknown backend id is rejected");
|
|
Expect(!error.empty(), "unknown backend reports an error");
|
|
|
|
if (gFailures != 0)
|
|
{
|
|
std::cerr << gFailures << " VideoIO backend factory test failure(s).\n";
|
|
return 1;
|
|
}
|
|
|
|
std::cout << "VideoIO backend factory tests passed.\n";
|
|
return 0;
|
|
}
|