18
#include "TestBase32.h"
19
#include "core/Base32.h"
23
QTEST_GUILESS_MAIN(TestBase32)
25
void TestBase32::testDecode()
28
QByteArray encodedData = "JBSWY3DPEB3W64TMMQXC4LQ=";
29
QVariant data = Base32::decode(encodedData);
30
QString expectedData = "Hello world...";
31
QVERIFY(!data.isNull());
32
QCOMPARE(data.toString(), expectedData);
33
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
36
encodedData = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ";
37
data = Base32::decode(encodedData);
38
expectedData = "12345678901234567890";
39
QVERIFY(!data.isNull());
40
QCOMPARE(data.toString(), expectedData);
41
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
44
encodedData = "gezdgnbvgy3tqojqgezdgnbvgy3tqojq";
45
data = Base32::decode(encodedData);
46
expectedData = "12345678901234567890";
47
QVERIFY(!data.isNull());
48
QCOMPARE(data.toString(), expectedData);
49
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
52
encodedData = "Gezdgnbvgy3tQojqgezdGnbvgy3tQojQ";
53
data = Base32::decode(encodedData);
54
expectedData = "12345678901234567890";
55
QVERIFY(!data.isNull());
56
QCOMPARE(data.toString(), expectedData);
57
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
60
encodedData = "ORSXG5A=";
61
data = Base32::decode(encodedData);
62
expectedData = "test";
63
QVERIFY(!data.isNull());
64
QCOMPARE(data.toString(), expectedData);
65
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
68
encodedData = "L5PV6===";
69
data = Base32::decode(encodedData);
71
QVERIFY(!data.isNull());
72
QCOMPARE(data.toString(), expectedData);
73
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
76
encodedData = "MZXW6IDCMFZA====";
77
data = Base32::decode(encodedData);
78
expectedData = "foo bar";
79
QVERIFY(!data.isNull());
80
QCOMPARE(data.toString(), expectedData);
81
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
84
encodedData = "MZXW6YTBOI======";
85
data = Base32::decode(encodedData);
86
expectedData = "foobar";
87
QVERIFY(!data.isNull());
88
QCOMPARE(data.toString(), expectedData);
89
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
91
encodedData = "IA======";
92
data = Base32::decode(encodedData);
94
QVERIFY(!data.isNull());
95
QCOMPARE(data.toString(), expectedData);
96
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
99
encodedData = "1MZXW6YTBOI=====";
100
data = Base32::decode(encodedData);
101
QVERIFY(data.isNull());
104
encodedData = "MZXW6YTBOI=====";
105
data = Base32::decode(encodedData);
106
QVERIFY(data.isNull());
110
data = Base32::decode(encodedData);
112
QVERIFY(!data.isNull());
113
QCOMPARE(data.toString(), expectedData);
114
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
116
encodedData = "MY======";
117
data = Base32::decode(encodedData);
119
QVERIFY(!data.isNull());
120
QCOMPARE(data.toString(), expectedData);
121
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
123
encodedData = "MZXQ====";
124
data = Base32::decode(encodedData);
126
QVERIFY(!data.isNull());
127
QCOMPARE(data.toString(), expectedData);
128
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
130
encodedData = "MZXW6===";
131
data = Base32::decode(encodedData);
132
QVERIFY(!data.isNull());
133
expectedData = "foo";
134
QCOMPARE(data.toString(), expectedData);
135
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
137
encodedData = "MZXW6YQ=";
138
data = Base32::decode(encodedData);
139
expectedData = "foob";
140
QVERIFY(!data.isNull());
141
QCOMPARE(data.toString(), expectedData);
142
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
144
encodedData = "MZXW6YTB";
145
expectedData = "fooba";
146
data = Base32::decode(encodedData);
147
QVERIFY(!data.isNull());
148
QCOMPARE(data.toString(), expectedData);
149
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
151
encodedData = "MZXW6YTBOI======";
152
data = Base32::decode(encodedData);
153
expectedData = "foobar";
154
QVERIFY(!data.isNull());
155
QCOMPARE(data.toString(), expectedData);
156
QVERIFY(data.value<QByteArray>().size() == expectedData.size());
159
void TestBase32::testEncode()
161
QByteArray data = "Hello world...";
162
QByteArray encodedData = Base32::encode(data);
163
QCOMPARE(encodedData, QByteArray("JBSWY3DPEB3W64TMMQXC4LQ="));
165
data = "12345678901234567890";
166
encodedData = Base32::encode(data);
167
QCOMPARE(encodedData, QByteArray("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"));
169
data = "012345678901234567890";
170
encodedData = Base32::encode(data);
171
QCOMPARE(encodedData, QByteArray("GAYTEMZUGU3DOOBZGAYTEMZUGU3DOOBZGA======"));
174
encodedData = Base32::encode(data);
175
QCOMPARE(encodedData, QByteArray("ORSXG5A="));
178
encodedData = Base32::encode(data);
179
QCOMPARE(encodedData, QByteArray("L5PV6==="));
182
encodedData = Base32::encode(data);
183
QCOMPARE(encodedData, QByteArray("MZXW6IDCMFZA===="));
186
encodedData = Base32::encode(data);
187
QCOMPARE(encodedData, QByteArray("IA======"));
191
encodedData = Base32::encode(data);
192
QCOMPARE(encodedData, QByteArray(""));
195
encodedData = Base32::encode(data);
196
QCOMPARE(encodedData, QByteArray("MY======"));
199
encodedData = Base32::encode(data);
200
QCOMPARE(encodedData, QByteArray("MZXQ===="));
203
encodedData = Base32::encode(data);
204
QCOMPARE(encodedData, QByteArray("MZXW6==="));
207
encodedData = Base32::encode(data);
208
QCOMPARE(encodedData, QByteArray("MZXW6YQ="));
211
encodedData = Base32::encode(data);
212
QCOMPARE(encodedData, QByteArray("MZXW6YTB"));
215
encodedData = Base32::encode(data);
216
QCOMPARE(encodedData, QByteArray("MZXW6YTBOI======"));
219
void TestBase32::testAddPadding()
222
QByteArray data = "";
223
QByteArray paddedData = Base32::addPadding(data);
224
QCOMPARE(paddedData, data);
228
paddedData = Base32::addPadding(data);
229
QCOMPARE(paddedData, data);
233
paddedData = Base32::addPadding(data);
234
QCOMPARE(paddedData, QByteArray("BB======"));
238
paddedData = Base32::addPadding(data);
239
QCOMPARE(paddedData, data);
243
paddedData = Base32::addPadding(data);
244
QCOMPARE(paddedData, QByteArray("BBBB===="));
248
paddedData = Base32::addPadding(data);
249
QCOMPARE(paddedData, QByteArray("BBBBB==="));
253
paddedData = Base32::addPadding(data);
254
QCOMPARE(paddedData, data);
258
paddedData = Base32::addPadding(data);
259
QCOMPARE(paddedData, QByteArray("BBBBBBB="));
263
paddedData = Base32::addPadding(data);
264
QCOMPARE(paddedData, data);
267
data = "AAAAAAAABBBBB";
268
paddedData = Base32::addPadding(data);
269
QCOMPARE(paddedData, QByteArray("AAAAAAAABBBBB==="));
272
void TestBase32::testRemovePadding()
274
QByteArray data = "";
275
QByteArray unpaddedData = Base32::removePadding(data);
276
QCOMPARE(unpaddedData, data);
278
data = "AAAAAAAABB======";
279
unpaddedData = Base32::removePadding(data);
280
QCOMPARE(unpaddedData, QByteArray("AAAAAAAABB"));
283
unpaddedData = Base32::removePadding(data);
284
QCOMPARE(unpaddedData, QByteArray("BBBB"));
286
data = "AAAAAAAABBBBB===";
287
unpaddedData = Base32::removePadding(data);
288
QCOMPARE(unpaddedData, QByteArray("AAAAAAAABBBBB"));
291
unpaddedData = Base32::removePadding(data);
292
QCOMPARE(unpaddedData, QByteArray("BBBBBBB"));
296
unpaddedData = Base32::removePadding(data);
297
QCOMPARE(unpaddedData, data);
300
data = "AAAAAAAABBBB=====";
301
unpaddedData = Base32::removePadding(data);
302
QCOMPARE(unpaddedData, data);
305
void TestBase32::testSanitizeInput()
308
QByteArray encodedData = "JBSW Y3DP EB3W 64TM MQXC 4LQA";
309
auto data = Base32::decode(Base32::sanitizeInput(encodedData));
310
QVERIFY(!data.isNull());
311
QCOMPARE(data.toString(), QString("Hello world..."));
314
encodedData = "J8SWY3DPE83W64TMMQXC4LQA";
315
data = Base32::decode(Base32::sanitizeInput(encodedData));
316
QVERIFY(!data.isNull());
317
QCOMPARE(data.toString(), QString("Hello world..."));
320
encodedData = "J8SWY3D[PE83W64TMMQ]XC!4LQA";
321
data = Base32::decode(Base32::sanitizeInput(encodedData));
322
QVERIFY(!data.isNull());
323
QCOMPARE(data.toString(), QString("Hello world..."));
326
encodedData = "J8SWY3DPE83W64TMMQXC4LQA";
327
encodedData.insert(3, '\0');
328
data = Base32::decode(Base32::sanitizeInput(encodedData));
329
QVERIFY(!data.isNull());
330
QCOMPARE(data.toString(), QString("Hello world..."));