File indexing completed on 2024-04-14 15:37:31
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Daniel Vratil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 * 0006 */ 0007 0008 #include <QObject> 0009 #include <QtTest> 0010 #include <cstdint> 0011 #include <utility> 0012 0013 #include "../src/configserializer_p.h" 0014 #include "../src/mode.h" 0015 #include "../src/output.h" 0016 #include "../src/screen.h" 0017 #include "../src/types.h" 0018 0019 class TestConfigSerializer : public QObject 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 TestConfigSerializer() 0025 { 0026 } 0027 0028 private Q_SLOTS: 0029 void testSerializePoint() 0030 { 0031 const QPoint point(42, 24); 0032 0033 const QJsonObject obj = KScreen::ConfigSerializer::serializePoint(point); 0034 QVERIFY(!obj.isEmpty()); 0035 0036 QCOMPARE(obj[QLatin1String("x")].toInt(), point.x()); 0037 QCOMPARE(obj[QLatin1String("y")].toInt(), point.y()); 0038 } 0039 0040 void testSerializeSize() 0041 { 0042 const QSize size(800, 600); 0043 0044 const QJsonObject obj = KScreen::ConfigSerializer::serializeSize(size); 0045 QVERIFY(!obj.isEmpty()); 0046 0047 QCOMPARE(obj[QLatin1String("width")].toInt(), size.width()); 0048 QCOMPARE(obj[QLatin1String("height")].toInt(), size.height()); 0049 } 0050 0051 void testSerializeList() 0052 { 0053 QStringList stringList; 0054 stringList << QStringLiteral("Item 1") << QStringLiteral("Item 2") << QStringLiteral("Item 3") << QStringLiteral("Item 4"); 0055 0056 QJsonArray arr = KScreen::ConfigSerializer::serializeList<QString>(stringList); 0057 QCOMPARE(arr.size(), stringList.size()); 0058 0059 for (int i = 0; i < arr.size(); ++i) { 0060 QCOMPARE(arr.at(i).toString(), stringList.at(i)); 0061 } 0062 0063 QList<int> intList; 0064 intList << 4 << 3 << 2 << 1; 0065 0066 arr = KScreen::ConfigSerializer::serializeList<int>(intList); 0067 QCOMPARE(arr.size(), intList.size()); 0068 0069 for (int i = 0; i < arr.size(); ++i) { 0070 QCOMPARE(arr.at(i).toInt(), intList[i]); 0071 } 0072 } 0073 0074 void testSerializeScreen() 0075 { 0076 KScreen::ScreenPtr screen(new KScreen::Screen); 0077 screen->setId(12); 0078 screen->setMinSize(QSize(360, 360)); 0079 screen->setMaxSize(QSize(8192, 8192)); 0080 screen->setCurrentSize(QSize(3600, 1280)); 0081 screen->setMaxActiveOutputsCount(3); 0082 0083 const QJsonObject obj = KScreen::ConfigSerializer::serializeScreen(screen); 0084 QVERIFY(!obj.isEmpty()); 0085 0086 QCOMPARE(obj[QLatin1String("id")].toInt(), screen->id()); 0087 QCOMPARE(obj[QLatin1String("maxActiveOutputsCount")].toInt(), screen->maxActiveOutputsCount()); 0088 const QJsonObject minSize = obj[QLatin1String("minSize")].toObject(); 0089 QCOMPARE(minSize[QLatin1String("width")].toInt(), screen->minSize().width()); 0090 QCOMPARE(minSize[QLatin1String("height")].toInt(), screen->minSize().height()); 0091 const QJsonObject maxSize = obj[QLatin1String("maxSize")].toObject(); 0092 QCOMPARE(maxSize[QLatin1String("width")].toInt(), screen->maxSize().width()); 0093 QCOMPARE(maxSize[QLatin1String("height")].toInt(), screen->maxSize().height()); 0094 const QJsonObject currSize = obj[QLatin1String("currentSize")].toObject(); 0095 QCOMPARE(currSize[QLatin1String("width")].toInt(), screen->currentSize().width()); 0096 QCOMPARE(currSize[QLatin1String("height")].toInt(), screen->currentSize().height()); 0097 } 0098 0099 void testSerializeMode() 0100 { 0101 KScreen::ModePtr mode(new KScreen::Mode); 0102 mode->setId(QStringLiteral("755")); 0103 mode->setName(QStringLiteral("1280x1024")); 0104 mode->setRefreshRate(50.666); 0105 mode->setSize(QSize(1280, 1024)); 0106 0107 const QJsonObject obj = KScreen::ConfigSerializer::serializeMode(mode); 0108 QVERIFY(!obj.isEmpty()); 0109 0110 QCOMPARE(obj[QLatin1String("id")].toString(), mode->id()); 0111 QCOMPARE(obj[QLatin1String("name")].toString(), mode->name()); 0112 QCOMPARE((float)obj[QLatin1String("refreshRate")].toDouble(), mode->refreshRate()); 0113 const QJsonObject size = obj[QLatin1String("size")].toObject(); 0114 QCOMPARE(size[QLatin1String("width")].toInt(), mode->size().width()); 0115 QCOMPARE(size[QLatin1String("height")].toInt(), mode->size().height()); 0116 } 0117 0118 void testSerializeOutput() 0119 { 0120 KScreen::ModeList modes; 0121 KScreen::ModePtr mode(new KScreen::Mode); 0122 mode->setId(QStringLiteral("1")); 0123 mode->setName(QStringLiteral("800x600")); 0124 mode->setSize(QSize(800, 600)); 0125 mode->setRefreshRate(50.4); 0126 modes.insert(mode->id(), mode); 0127 0128 KScreen::OutputPtr output(new KScreen::Output); 0129 output->setId(60); 0130 output->setName(QStringLiteral("LVDS-0")); 0131 output->setType(KScreen::Output::Panel); 0132 output->setIcon(QString()); 0133 output->setModes(modes); 0134 output->setPos(QPoint(1280, 0)); 0135 output->setSize(mode->size()); 0136 output->setRotation(KScreen::Output::None); 0137 output->setCurrentModeId(QStringLiteral("1")); 0138 output->setPreferredModes(QStringList() << QStringLiteral("1")); 0139 output->setConnected(true); 0140 output->setEnabled(true); 0141 output->setPriority(1); 0142 output->setClones(QList<int>() << 50 << 60); 0143 output->setSizeMm(QSize(310, 250)); 0144 0145 const QJsonObject obj = KScreen::ConfigSerializer::serializeOutput(output); 0146 QVERIFY(!obj.isEmpty()); 0147 0148 QCOMPARE(obj[QLatin1String("id")].toInt(), output->id()); 0149 QCOMPARE(obj[QLatin1String("name")].toString(), output->name()); 0150 QCOMPARE(static_cast<KScreen::Output::Type>(obj[QLatin1String("type")].toInt()), output->type()); 0151 QCOMPARE(obj[QLatin1String("icon")].toString(), output->icon()); 0152 const QJsonArray arr = obj[QLatin1String("modes")].toArray(); 0153 QCOMPARE(arr.size(), output->modes().count()); 0154 0155 QJsonObject pos = obj[QLatin1String("pos")].toObject(); 0156 QCOMPARE(pos[QLatin1String("x")].toInt(), output->pos().x()); 0157 QCOMPARE(pos[QLatin1String("y")].toInt(), output->pos().y()); 0158 const QJsonObject size = obj[QLatin1String("size")].toObject(); 0159 QCOMPARE(size[QLatin1String("width")].toInt(), output->size().width()); 0160 QCOMPARE(size[QLatin1String("height")].toInt(), output->size().height()); 0161 0162 QCOMPARE(static_cast<KScreen::Output::Rotation>(obj[QLatin1String("rotation")].toInt()), output->rotation()); 0163 QCOMPARE(obj[QLatin1String("currentModeId")].toString(), output->currentModeId()); 0164 QCOMPARE(obj[QLatin1String("connected")].toBool(), output->isConnected()); 0165 QCOMPARE(obj[QLatin1String("enabled")].toBool(), output->isEnabled()); 0166 QCOMPARE(obj[QLatin1String("priority")].toInt(), output->priority()); 0167 const QJsonArray clones = obj[QLatin1String("clones")].toArray(); 0168 QCOMPARE(clones.size(), output->clones().count()); 0169 for (int i = 0; i < clones.size(); ++i) { 0170 QCOMPARE(clones[i].toInt(), output->clones()[i]); 0171 } 0172 const QJsonObject sizeMm = obj[QLatin1String("sizeMM")].toObject(); 0173 QCOMPARE(sizeMm[QLatin1String("width")].toInt(), output->sizeMm().width()); 0174 QCOMPARE(sizeMm[QLatin1String("height")].toInt(), output->sizeMm().height()); 0175 } 0176 }; 0177 0178 QTEST_MAIN(TestConfigSerializer) 0179 0180 #include "testconfigserializer.moc"