-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathblurhashtest.cpp
107 lines (83 loc) · 2.85 KB
/
blurhashtest.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// SPDX-FileCopyrightText: 2024 Joshua Goins <[email protected]>
// SPDX-License-Identifier: MIT
#include <blurhash.h>
#include <QTest>
class BlurHashTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void decode83_data();
void decode83();
void unpackComponents();
void decodeMaxAC();
void decodeAverageColor_data();
void decodeAverageColor();
void decodeAC();
void decodeImage();
};
void BlurHashTest::decode83_data()
{
QTest::addColumn<QString>("value");
QTest::addColumn<std::optional<int>>("expected");
// invalid base83 characters
QTest::addRow("decoding 1") << "試し" << std::optional<int>(std::nullopt);
QTest::addRow("decoding 2") << "(" << std::optional<int>(std::nullopt);
QTest::addRow("decoding 3") << "0" << std::optional(0);
QTest::addRow("decoding 4") << "L" << std::optional(21);
QTest::addRow("decoding 5") << "U" << std::optional(30);
QTest::addRow("decoding 6") << "Y" << std::optional(34);
QTest::addRow("decoding 7") << "1" << std::optional(1);
}
void BlurHashTest::decode83()
{
QFETCH(QString, value);
QFETCH(std::optional<int>, expected);
QCOMPARE(BlurHash::decode83(value), expected);
}
void BlurHashTest::unpackComponents()
{
BlurHash::Components components;
components.x = 6;
components.y = 6;
QCOMPARE(BlurHash::unpackComponents(50), components);
}
void BlurHashTest::decodeMaxAC()
{
QCOMPARE(BlurHash::decodeMaxAC(50), 0.307229f);
}
void BlurHashTest::decodeAverageColor_data()
{
QTest::addColumn<int>("value");
QTest::addColumn<QColor>("expected");
QTest::addRow("decoding 1") << 12688010 << QColor(0xffc19a8a);
QTest::addRow("decoding 2") << 9934485 << QColor(0xff979695);
QTest::addRow("decoding 3") << 8617624 << QColor(0xff837e98);
QTest::addRow("decoding 4") << 14604757 << QColor(0xffded9d5);
QTest::addRow("decoding 5") << 13742755 << QColor(0xffd1b2a3);
}
void BlurHashTest::decodeAverageColor()
{
QFETCH(int, value);
QFETCH(QColor, expected);
QCOMPARE(BlurHash::decodeAverageColor(value), expected);
}
void BlurHashTest::decodeAC()
{
constexpr auto maxAC = 0.289157f;
constexpr auto expectedColor = BlurHash::ColorF{-0.289157f, -0.289157f, -0.289157f};
const auto resultColor = BlurHash::decodeAC(0, maxAC);
QCOMPARE(resultColor.r, expectedColor.r);
QCOMPARE(resultColor.g, expectedColor.g);
QCOMPARE(resultColor.b, expectedColor.b);
}
void BlurHashTest::decodeImage()
{
const auto image = BlurHash::decode(QStringLiteral("eBB4=;054UK$=402%s%|r^O%06#?*7RijMxGpYMzniVNT@rFN3#=Kt"), QSize(50, 50));
QVERIFY(!image.isNull());
QCOMPARE(image.width(), 50);
QCOMPARE(image.height(), 50);
QCOMPARE(image.pixelColor(0, 0), QColor(0xff005f00));
QCOMPARE(image.pixelColor(30, 30), QColor(0xff99b76d));
}
QTEST_GUILESS_MAIN(BlurHashTest)
#include "blurhashtest.moc"