Revision control
++ // Copyright (C) 2024 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ #include <QtTest/qtest.h>
++ #include <QtMultimedia/private/qplatformmediaintegration_p.h>
++ #include <QtCore/qdebug.h>
++ #include <QtCore/qsysinfo.h>
++
++ class tst_backends : public QObject
++ {
++ Q_OBJECT
++
++ public slots:
++ void initTestCase()
++ {
++ // Log operating system name and currently supported backends
++ qDebug() << QSysInfo::prettyProductName() << "supports backends"
++ << QPlatformMediaIntegration::availableBackends().join(", ");
++ }
++
++ private slots:
++ void availableBackends_returns_expectedBackends_data()
++ {
++ QTest::addColumn<QStringList>("expectedBackends");
++ QStringList backends;
++
++ #if defined(Q_OS_WIN)
++ backends << "windows";
++ if (QSysInfo::currentCpuArchitecture() == "x86_64")
++ backends << "ffmpeg";
++ #elif defined(Q_OS_ANDROID)
++ backends << "android" << "ffmpeg";
++ #elif defined(Q_OS_DARWIN)
++ backends << "darwin" << "ffmpeg";
++ #elif defined(Q_OS_WASM)
++ backends << "wasm";
++ #elif defined(Q_OS_QNX)
++ backends << "qnx";
++ #elif defined(Q_OS_HARMONY)
++ backends << "harmonyos";
++ #else
++ backends << "ffmpeg";
++ if constexpr (QT_CONFIG(gstreamer))
++ backends << "gstreamer";
++ #endif
++
++ QTest::addRow("backends") << backends;
++ }
++
++ void availableBackends_returns_expectedBackends()
++ {
++ QFETCH(QStringList, expectedBackends);
++ QStringList actualBackends = QPlatformMediaIntegration::availableBackends();
++ for (const auto &expectedBackend : expectedBackends) {
++ QVERIFY(actualBackends.contains(expectedBackend));
++ }
++ }
++ };
++
++ QTEST_MAIN(tst_backends)
++
++ #include "tst_backends.moc"