File indexing completed on 2024-12-08 10:17:15

0001 // SPDX-FileCopyrightText: Lukas Sommer <sommerluk@gmail.com>
0002 // SPDX-License-Identifier: BSD-2-Clause OR MIT
0003 
0004 // First included header is the public header of the class we are testing;
0005 // this forces the header to be self-contained.
0006 #include "rgbcolorspacefactory.h"
0007 
0008 #include "chromahuediagram.h"
0009 #include "colorwheel.h"
0010 #include "rgbcolorspace.h"
0011 #include "settranslation.h"
0012 #include <qcoreapplication.h>
0013 #include <qdebug.h>
0014 #include <qglobal.h>
0015 #include <qlocale.h>
0016 #include <qobject.h>
0017 #include <qsharedpointer.h>
0018 #include <qstringliteral.h>
0019 #include <qtest.h>
0020 #include <qtestcase.h>
0021 
0022 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
0023 #include <qcontainerfwd.h>
0024 #include <qlist.h>
0025 #include <qtmetamacros.h>
0026 #else
0027 #include <qobjectdefs.h>
0028 #include <qstring.h>
0029 #include <qstringlist.h>
0030 #endif
0031 
0032 static void snippet01()
0033 {
0034     //! [Create]
0035     QSharedPointer<PerceptualColor::RgbColorSpace> myColorSpace =
0036         // Create the color space object with the factory class.
0037         // This call might be slow.
0038         PerceptualColor::RgbColorSpaceFactory::createSrgb();
0039 
0040     // These calls are fast:
0041 
0042     PerceptualColor::ChromaHueDiagram *myDiagram =
0043         // Create a widget with the color space:
0044         new PerceptualColor::ChromaHueDiagram(myColorSpace);
0045 
0046     PerceptualColor::ColorWheel *myWheel =
0047         // Create another widget with the very same color space:
0048         new PerceptualColor::ColorWheel(myColorSpace);
0049     //! [Create]
0050 
0051     delete myDiagram;
0052     delete myWheel;
0053 }
0054 
0055 namespace PerceptualColor
0056 {
0057 class TestRgbColorSpaceFactory : public QObject
0058 {
0059     Q_OBJECT
0060 
0061 public:
0062     explicit TestRgbColorSpaceFactory(QObject *parent = nullptr)
0063         : QObject(parent)
0064     {
0065     }
0066 
0067 private Q_SLOTS:
0068     void initTestCase()
0069     {
0070         // Called before the first test function is executed
0071     }
0072 
0073     void cleanupTestCase()
0074     {
0075         // Called after the last test function was executed
0076     }
0077 
0078     void init()
0079     {
0080         // Called before each test function is executed
0081     }
0082 
0083     void cleanup()
0084     {
0085         // Called after every test function
0086     }
0087 
0088     void testCreate()
0089     {
0090         setTranslation(QCoreApplication::instance(), //
0091                        QLocale(QLocale::English).uiLanguages());
0092         QSharedPointer<PerceptualColor::RgbColorSpace> temp = //
0093             RgbColorSpaceFactory::createSrgb();
0094         QCOMPARE(temp.isNull(), false); // This is no nullptr!
0095         // Make a random call, just to be sure that a method call won’t crash:
0096         Q_UNUSED(temp->profileName());
0097         // Make sure the returned value is actually the sRGB gamut.
0098         QCOMPARE(temp->profileName(), QStringLiteral("sRGB color space"));
0099     }
0100 
0101     void testSnipped01()
0102     {
0103         snippet01();
0104     }
0105 
0106     void testColorProfileDirectories()
0107     {
0108         // colorProfileDirectories() must not throw an exception:
0109         const QStringList temp = //
0110             RgbColorSpaceFactory::colorProfileDirectories();
0111         Q_UNUSED(temp)
0112     }
0113 
0114     void testColorProfileDirectoriesQInfo()
0115     {
0116         qInfo() << RgbColorSpaceFactory::colorProfileDirectories();
0117     }
0118 };
0119 
0120 } // namespace PerceptualColor
0121 
0122 QTEST_MAIN(PerceptualColor::TestRgbColorSpaceFactory)
0123 
0124 // The following “include” is necessary because we do not use a header file:
0125 #include "testrgbcolorspacefactory.moc"